我的数据看起来像
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)
编辑:包含调用中的row.names
参数data.frame
(来自@Richard Scriven的评论)
或者正如@Ananda Mahto所提到的,我们可以names(df1)
用来创建'r1'列,从而跳过在全局环境中创建对象的过程.
d2 <- data.frame(r1=names(df1), t(df1))
或者另一个选择是melt/dcast
.我们转换data.frame
到matrix
,melt
以"长"格式,然后dcast
它以"宽"格式.
library(reshape2) dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value')