R 从唯一行创建新列(散列列)
R creating a new column from unique rows (hashing a column)
我有一个像
这样的数据框
id val
3243 A
3420 B
8428 A
3420 C
9000 D
我想按顺序创建一个基于唯一 ID 的新列,这样
id val transformed_id
3243 A 1
3420 B 2
8428 A 3
3420 C 2
9000 D 4
我真的对此一窍不通,我看了transform
和unique
,可以在python中想到一个解决方案,但不能将其转换为R。
我们可以使用match
或factor
。
我们 match
'id' 列与 'id' 的 unique
个元素来获取数字索引。
df1$transformed_id <- match(df1$id, unique(df1$id))
或者我们将 'id' 转换为 factor
class,将 levels
指定为 'id' 的 unique
值(在本例中它应该在不指定 levels
的情况下工作,但通常指定 levels
会更正确)并转换为 numeric
.
df1$transformed_id <- as.numeric(factor(df1$id, levels=unique(df1$id)))
df1
# id val transformed_id
#1 3243 A 1
#2 3420 B 2
#3 8428 A 3
#4 3420 C 2
#5 9000 D 4
数据
df1 <- structure(list(id = c(3243L, 3420L, 8428L, 3420L, 9000L),
val = c("A",
"B", "A", "C", "D")), .Names = c("id", "val"), class = "data.frame",
row.names = c(NA, -5L))
我有一个像
这样的数据框id val
3243 A
3420 B
8428 A
3420 C
9000 D
我想按顺序创建一个基于唯一 ID 的新列,这样
id val transformed_id
3243 A 1
3420 B 2
8428 A 3
3420 C 2
9000 D 4
我真的对此一窍不通,我看了transform
和unique
,可以在python中想到一个解决方案,但不能将其转换为R。
我们可以使用match
或factor
。
我们 match
'id' 列与 'id' 的 unique
个元素来获取数字索引。
df1$transformed_id <- match(df1$id, unique(df1$id))
或者我们将 'id' 转换为 factor
class,将 levels
指定为 'id' 的 unique
值(在本例中它应该在不指定 levels
的情况下工作,但通常指定 levels
会更正确)并转换为 numeric
.
df1$transformed_id <- as.numeric(factor(df1$id, levels=unique(df1$id)))
df1
# id val transformed_id
#1 3243 A 1
#2 3420 B 2
#3 8428 A 3
#4 3420 C 2
#5 9000 D 4
数据
df1 <- structure(list(id = c(3243L, 3420L, 8428L, 3420L, 9000L),
val = c("A",
"B", "A", "C", "D")), .Names = c("id", "val"), class = "data.frame",
row.names = c(NA, -5L))