簡體   English   中英

使用數據框數組在for循環中創建數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM