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

I want to turn column names into an identifying column in R

大家好,我是 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 列结尾;一个包含行中的数字,另一列包含当前列名作为数字的标识符?

如果我们需要 row/column 索引,我们可以使用 rowcol 来获取 row/column 索引并使用 data.frame 创建一个新数据集。

df2 <- data.frame(Row= c(row(df1)), 
               Col=names(df1)[col(df1)], stringsAsFactors=FALSE)

或者另一个选项是 melt 来自 library(reshape2)。我们将 'data.frame' 转换为 'matrix' 和 melt 以获得 row/column 名称作为前两列。

library(reshape2)
melt(as.matrix(df1))[-3]

编辑: 如果我们需要 value 和列名作为两列,只需 melt 或使用 stack 作为@thelatemail 提到的

melt(df1)

stack 来自 base R

stack(df1)

也许你可以使用 tidyr 包中的 gather

> 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