2

我有一个如下所示的数据框。我需要根据 RL 中可用的区域提取 df

    >avg_data
    region  SN      value
    beta    1       32
    alpha   2       44
    beta    3       55
    beta    4       60
    atp     5       22


    > RL
           V1
    1 beta
    2 alpha

该数据框应该在类似 REGR[beta] 的数组中,其中应该包含与 beta 相关的信息,如下所示

    region  SN      value
    beta    1       32
    beta    3       55
    beta    4       60

类似地对于 REGR[alpha]

    region  SN      value
    alpha   2       44

这样我就可以将 REGR 作为绘图图的参数传递。

    REGR <- data.frame()

    for (i in levels(RL$V1)){
     REGR[i,] <- avg_data[avg_data$region==i, ];
    }

我在上面的代码中犯了一些错误。请纠正我..谢谢

4

1 回答 1

1

split您可能对这个功能感兴趣。从帮助页面,拆分divides the data in the vector x into the groups defined by f.

因此,对于您的数据,它可能类似于:

> split(avg_data, avg_data$region)
$alpha
  region SN value
2  alpha  2    44

$atp
  region SN value
5    atp  5    22

$beta
  region SN value
1   beta  1    32
3   beta  3    55
4   beta  4    60

如果您想过滤掉 RL 中没有出现的记录,我可能会在使用该%in%函数的预处理步骤中执行此操作并[进行提取:

x <- avg_data[avg_data$region %in% RL$V1,]
#-----
  region SN value
1   beta  1    32
2  alpha  2    44
3   beta  3    55

split如果您想放弃 atp,这就是我要喂的东西。

如果您只是想绘图,上面的方法可能会过大。这是一个sapply用于遍历每个区域级别并绘制图的示例:

sapply(unique(x$region), function(z) 
  plot(x[x$region == z,"value"], main=z[1]))
于 2012-06-27T13:48:27.917 回答