2015-10-14 90 views
0

使從名單dataframes我有一個列表數據如何因素中的R

test1 <- list(c(ID='a',VALUE='va1'), 
       c(ID='a',VALUE='va2'), 
       c(ID='b',VALUE='vb1'), 
       c(ID='c',VALUE='vc1'), 
       c(ID='c',VALUE='vc2'), 
       c(ID='c',VALUE='vc3')) 

而且,我想拆分和合併到3個dataframes與ID名稱,

請讓我知道如何將每個數據存儲到具有其ID的名稱的新數據框中。

| ID | VALUE | 
| a | va1 va2 | 

| ID | VALUE |  
| b |  vb2  | 

| ID | VALUE | 
| c | vc1 vc2 vc3 |  

在此先感謝

+1

嘗試'D1 < - as.data.frame(do.call(rbind,TEST1)); split(d1,d1 $ VALUE)' – akrun

+0

@akrun這給出,「d1 $ VALUE:$運算符對於原子向量無效」對於我... – user1945827

+0

感謝您的回覆。它被綁定,但我不能拆分(d1,d1 $ ID)。 – liveinfootball

回答

3

base R我們可以綁定列表一起,然後拆分後聚集VALUE

a <- aggregate(VALUE ~ ., do.call(rbind, test1), toString) 
split(a, a$ID) 
# $a 
# ID VALUE 
# 1 a va1, va2 
# 
# $b 
# ID VALUE 
# 2 b vb1 
# 
# $c 
# ID   VALUE 
# 3 c vc1, vc2, vc3 

要訪問的每個數據幀,則可以使用:

s <- split(a, a$ID) 
s$a 
# ID VALUE 
#1 a va1, va2 

#or 
s[[1]] 
# ID VALUE 
#1 a va1, va2 
+0

非常感謝!它的工作原理,但如果你不介意的話,請讓我知道如何將每個數據存儲到具有其ID的名稱的新數據框中。謝謝! – liveinfootball

+0

@liveinfootball您應該將此請求添加到您的原始問題。 – 2015-10-14 07:22:20

+0

而不是在全局環境中創建新的對象,你可以從列表中訪問所有的數據幀,比如's < - split(a,$ ID); s $ a'或者用s [[2]]來編號。 –