2015-11-09 76 views
2

我有多個與以下類似的列表。使用列名創建兩列數據框

a = c(1,2,3) 
b = c(4,5,6) 
c = c(7,8,9) 

我知道我可以使用cbind.data.frame創建一個3x3數據幀。然而,我想建立一個2列的數據幀,其中,行1-3在第1列具有a,4-6行有b等,這看起來像從手動創建的數據幀:

data.frame(c('a','a','a','b','b','b'), c(1,2,3,4,5,6)) 

回答

4

我們可以創建key/valuelist元素並使用stack將其轉換爲2列數據集。 mget用KEY作爲對象名稱獲取list中字符對象名稱的值。

stack(mget(c('a', 'b', 'c'))) 
# values ind 
#1  1 a 
#2  2 a 
#3  3 a 
#4  4 b 
#5  5 b 
#6  6 b 
#7  7 c 
#8  8 c 
#9  9 c 
+1

這是完美的。謝謝! –

3

另一種選擇是創建3×3 data.framemelt它:

library(reshape2) 
melt(data.frame(a = c(1,2,3),b = c(4,5,6),c = c(7,8,9))) 

# variable value 
#1  a  1 
#2  a  2 
#3  a  3 
#4  b  4 
#5  b  5 
#6  b  6 
#7  c  7 
#8  c  8 
#9  c  9 
相關問題