2012-06-27 188 views
2

我有一個數據幀,如下所示。我需要根據其在RL使用數據幀數組在數據幀中創建數據幀

>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-β應含β相關的信息作爲區域提取DF像下面

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, ]; 
    } 

我在上面的代碼中犯了一些錯誤。請糾正我..謝謝

回答

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])) 
+0

非常感謝您對這個想法用sapply的。 – Tamilan