我想将列名转换为 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 索引,我们可以使用 row
和 col
来获取 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
大家好,我是 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 索引,我们可以使用 row
和 col
来获取 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