[英]change data.frame column into rows in R
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
I would like to have this: 我想要这个:
df
1 2
A 1 6
B 2 7
C 3 8
D 4 9
E 5 0
If your dataframe is truly in that format, then all of your vectors will be character vectors. 如果您的数据帧真的是那种格式,那么所有的向量都将是字符向量。 Or, you basically have a character matrix and you could do this:
或者,你基本上有一个字符矩阵,你可以这样做:
data.frame(t(df))
It would be better, though, to just define it the way you want it from the get-go 不过,最好只按照你想要的方式定义它
df <- data.frame(c('A','B','C','D','E'),
c(1, 2, 3, 4, 5),
c(6, 7, 8, 9, 0))
You could also do this 你也可以这样做
df <- data.frame(LETTERS[1:5], 1:5, c(6:9, 0))
If you wanted to give the columns names, you could do this 如果你想给列名称,你可以这样做
df <- data.frame(L = LETTERS[1:5], N1 = 1:5, N2 = c(6:9, 0))
Sometimes, if I use read.DIF of Excel data the data gets transposed. 有时,如果我使用Excel数据的read.DIF,则数据会被转置。 Is that how you got the original data in?
你是如何获得原始数据的? If so, you can call
如果是这样,你可以打电话
read.DIF(filename, transpose = T)
to get the data in the correct orientation. 以正确的方向获取数据。
I really recommend data.table
approach without manual steps becauce they are error-prone 我真的推荐
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
Output 产量
A B C D E
1 1 2 3 4 5
2 6 7 8 9 0
Vars variable value
1: 1 A 1
2: 2 A 6
3: 1 B 2
4: 2 B 7
5: 1 C 3
6: 2 C 8
7: 1 D 4
8: 2 D 9
9: 1 E 5
10: 2 E 0
R: 3.4.0 (backports) R:3.4.0(backports)
OS: Debian 8.7 操作系统:Debian 8.7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.