需要将列转换为R中的行

时间:2015-12-24 05:30:35

标签: r reshape transpose

我的数据看起来像

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

提前致谢

1 个答案:

答案 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')
相关问题