我的数据框如下所示。我需要根据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α
region SN value
alpha 2 44
这样我就可以将REGR作为绘图的参数传递。
REGR <- data.frame()
for (i in levels(RL$V1)){
REGR[i,] <- avg_data[avg_data$region==i, ];
}
我在上面的代码中犯了一些错误。请纠正我..谢谢
答案 0 :(得分: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
如果您想放弃atp,我就会向split
提供这些内容。
如果你只是想绘图,上面的方法可能有点过分。以下是使用sapply
迭代每个级别的区域并制作图表的示例:
sapply(unique(x$region), function(z)
plot(x[x$region == z,"value"], main=z[1]))