我有一个像
这样的数据框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。
答案 0 :(得分:2)
我们可以使用match
或factor
。
我们match
'id'列,其中unique
元素为'id',以获取数字索引。
df1$transformed_id <- match(df1$id, unique(df1$id))
或者我们将'id'转换为factor
类,将levels
指定为{id'的unique
值(在这种情况下,它应该可以在不指定{{1}的情况下工作},但通常指定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