堆叠数据框的多列以形成单列
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.frame
到 data.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
。
我有一个数据框
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.frame
到 data.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
。