R 将字符串数据帧转换为唯一数字

use*_*015 0 string r dataframe r-factor

我有一个非常大的数据框(假设有 8 行 x 10,000 列),其中充满了字符串。我想将每个唯一的字符串转换为数字并用它替换。

例如,如果我有一个数据框:

   X1       X2       X3
1 cat    mouse     rabbit
2 dog   cat, dog    dog
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

   X1        X2     X3
1   1         2       3
2   4         5       4
Run Code Online (Sandbox Code Playgroud)

请注意,“猫,狗”的组合标签有自己的唯一编号。每个字符串的实际编号是无关紧要的,因为我这样做是为了评估者间的可靠性计算。

如果我没有获得所有独特的元素,为它们分配一个数字并替换,是否有更优雅的方法来做到这一点?

另外,如果元素中的值为空,例如“”,则应将其转换为数字 DF 中的 NA。

Maë*_*aël 5

您可以matchunique值进行:

df[] <- sapply(df, match, unique(unlist(df)))

#> df
  X1 X2 X3
1  1  3  5
2  2  4  2
Run Code Online (Sandbox Code Playgroud)

或者,更简单:

df[] <- match(unlist(df), unique(unlist(df)))
Run Code Online (Sandbox Code Playgroud)