使用列名创建双列数据框

时间:2015-11-09 15:36:57

标签: r dataframe

我有多个类似下面的列表。

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))

2 个答案:

答案 0 :(得分:4)

我们可以创建key/valuelist元素,并使用stack将其转换为2列数据集。 mget获取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)

另一种选择是创建3x3 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