堆叠数据框的多列以形成单列

stacking multiple columns of a data frame to make a single column

我有一个数据框

id dep    e1  e2  e3  
 1  x     a   b   c
 2  y     d   e   f
 3  z     g   h   i

现在我想创建一个只包含这样的数据的列(不在同一个 table 中)

edu

a
b
c
d
e
f
g
h
i

请帮助我如何做 R?

c(t(dat[3:5]))
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i"

如果你想要的是 data.frame:

data.frame(edu=c(t(dat[3:5])))
  edu
1   a
2   b
3   c
4   d
5   e
6   f
7   g
8   h
9   i

您可以使用 data.table:

library(data.table)

强制 data.framedata.table:

setDT(df)

将它从宽到长融化,按 value 和该列的子集排序:

melt(df, id.vars= c("id", "dep"))[order(value), ][, .(value)]

结果是 data.table,有 1 列和 9 个观察值:

   value
1:     a
2:     b
3:     c
4:     d
5:     e
6:     f
7:     g
8:     h
9:     i

如果您需要 data.frame,只需使用 setDF