我想将列名转换为R中的标识列

时间:2015-09-04 05:45:25

标签: r reshape2

嘿伙计们,如果这是一个愚蠢的问题,我对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列;一个是行中的数字,另一个列是当前列名称作为数字的标识符?

2 个答案:

答案 0 :(得分:2)

如果我们需要行/列索引,我们可以使用rowcol来获取行/列索引并使用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