嘿伙计们,如果这是一个愚蠢的问题,我对R很陌生,所以道歉。我有一个如下所示的数据框:
Gelatin Geltrex Combo Control
1 0.761 0.732 0.557 0.723
2 0.704 0.712 0.764 0.540
3 0.580 0.435 0.351 0.537
我想最终得到2列;一个是行中的数字,另一个列是当前列名称作为数字的标识符?
答案 0 :(得分:2)
如果我们需要行/列索引,我们可以使用row
和col
来获取行/列索引并使用data.frame
创建新数据集。
df2 <- data.frame(Row= c(row(df1)),
Col=names(df1)[col(df1)], stringsAsFactors=FALSE)
或其他选项melt
来自library(reshape2)
。我们转换了&#39; data.frame&#39;到&#39;矩阵&#39;和melt
将行/列名称作为前两列。
library(reshape2)
melt(as.matrix(df1))[-3]
编辑:
如果我们需要value
和列名称作为两列,只需melt
或使用stack
作为@thelatemail提及
melt(df1)
stack
来自base R
stack(df1)
答案 1 :(得分:1)
也许你可以使用tidyr包中的聚集
> library(tidyr)
> df = data.frame(a = c(1,2,3), b = c(4,5,6), d = c(7, 8, 9))
> newdf = gather(df, columnNames, values)
columnNames values
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
6 b 6
7 d 7
8 d 8
9 d 9