将data.frame列更改为R中的行

时间:2011-09-08 01:47:55

标签: r rows dataframe

A <- c(1,6)
B <- c(2,7)
C <- c(3,8)
D <- c(4,9)
E <- c(5,0)
df <- data.frame(A,B,C,D,E)
df
  A B C D E
1 1 2 3 4 5
2 6 7 8 9 0

我想有这个:

df
   1  2
A  1  6 
B  2  7
C  3  8
D  4  9    
E  5  0

2 个答案:

答案 0 :(得分:23)

如果你的数据帧真的是那种格式,那么你的所有向量都将是字符向量。或者,你基本上有一个字符矩阵,你可以这样做:

data.frame(t(df))

不过,最好按照你想要的方式来定义它。

df <- data.frame(c('A','B','C','D','E'), 
                 c(1, 2, 3, 4, 5),
                 c(6, 7, 8, 9, 0))

您也可以这样做

df <- data.frame(LETTERS[1:5], 1:5, c(6:9, 0))

如果您想提供列名称,可以执行此操作

df <- data.frame(L = LETTERS[1:5], N1 = 1:5, N2 = c(6:9, 0))

有时,如果我使用Excel数据的read.DIF,数据会被转置。你是如何获得原始数据的?如果是,您可以致电

read.DIF(filename, transpose = T)

以正确的方向获取数据。

答案 1 :(得分:3)

我真的推荐pythoncom.PumpMessages()方法而不需要手动操作,因为它们容易出错

data.table

输出

A <- c(1,6)
B <- c(2,7)
C <- c(3,8)
D <- c(4,9)
E <- c(5,0)
df <- data.frame(A,B,C,D,E)
df

library('data.table')
dat.m <- melt(as.data.table(df, keep.rownames = "Vars"), id.vars = "Vars") # https://stackoverflow.com/a/44128640/54964

dat.m

R:3.4.0(backports)
操作系统:Debian 8.7