[英]create dataframe in for loop using dataframe array
我有一個數據框,如下所示。 我需要根據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有關的信息,如下所示
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, ];
}
我在上面的代碼中犯了一些錯誤。 請指正我..謝謝
split
功能可能會讓您感興趣。 在幫助頁面上,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]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.