我的数据看起来像
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
提前致谢
答案 0 :(得分:8)
我们可以转置数据集并转换为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
转换为'long'格式,然后将dcast
转换为'wide'格式。
library(reshape2)
dcast(melt(as.matrix(df1)), Var2~paste0('r', Var1), value.var='value')