R从唯一行创建新列(散列列)

时间:2015-08-20 02:02:44

标签: r transformation

我有一个像

这样的数据框
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

我真的对此毫无头绪,我看了transformunique,可以在python中思考一个解决方案,但不能将其转换为R。

1 个答案:

答案 0 :(得分:2)

我们可以使用matchfactor

我们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