需要将列转换为 R 中的行
Need to convert columns to rows in R
我的数据看起来像
a b c
1 5 4
3 6 1
2 5 3
我想将其转换为将所有列转换为行,并希望得到类似
的输出
r1 r2 r3 r4
a 1 3 2
b 5 6 5
c 4 1 3
提前致谢
我们可以转置数据集并转换为 data.frame
,第一列作为行名。
m1 <- t(df1)
d2 <- data.frame(r1= row.names(m1), m1, row.names=NULL)
编辑:在 data.frame
调用中包含 row.names
参数(来自@Richard Scriven 的评论)
或者如@Ananda Mahto 所述,我们可以使用 names(df1)
创建 'r1' 列,从而跳过在全局环境中创建对象。
d2 <- data.frame(r1=names(df1), t(df1))
或者另一个选项是 melt/dcast
。我们将 data.frame
转换为 matrix
,将 melt
转换为 'long' 格式,然后将 dcast
转换为 'wide' 格式。
library(reshape2)
dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value')
我的数据看起来像
a b c
1 5 4
3 6 1
2 5 3
我想将其转换为将所有列转换为行,并希望得到类似
的输出r1 r2 r3 r4
a 1 3 2
b 5 6 5
c 4 1 3
提前致谢
我们可以转置数据集并转换为 data.frame
,第一列作为行名。
m1 <- t(df1)
d2 <- data.frame(r1= row.names(m1), m1, row.names=NULL)
编辑:在 data.frame
调用中包含 row.names
参数(来自@Richard Scriven 的评论)
或者如@Ananda Mahto 所述,我们可以使用 names(df1)
创建 'r1' 列,从而跳过在全局环境中创建对象。
d2 <- data.frame(r1=names(df1), t(df1))
或者另一个选项是 melt/dcast
。我们将 data.frame
转换为 matrix
,将 melt
转换为 'long' 格式,然后将 dcast
转换为 'wide' 格式。
library(reshape2)
dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value')