【问题标题】:R converting dataframe of strings to unique numbers [duplicate]R将字符串的数据帧转换为唯一数字[重复]
【发布时间】:2022-11-04 21:18:57
【问题描述】:

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

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

   X1       X2       X3
1 cat    mouse     rabbit
2 dog   cat, dog    dog

我想将其转换为:

   X1        X2     X3
1   1         2       3
2   4         5       4

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

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

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

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以在 unique 值上使用 match

    df[] <- sapply(df, match, unique(unlist(df)))
    
    #> df
      X1 X2 X3
    1  1  3  5
    2  2  4  2
    

    【讨论】:

    • 我正要发布基本相同的答案。唯一的区别是您可能希望将结果写入df[],以便输出仍然是一个数据帧。
    • Ack,一个更正,其中一些值可以是“”,应该转换为 NA。我已经进行了调整。
    • 没问题,只需事先转换它们; df[df == ""] &lt;- NA
    【解决方案2】:

    使用factor

    df[] <- as.numeric(factor(unlist(df)))
    
    df
    #   X1 X2 X3
    # 1  1  4  5
    # 2  3  2  3
    

    【讨论】:

      猜你喜欢
      • 2023-01-21
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2017-07-14
      • 2019-01-16
      相关资源
      最近更新 更多