【问题标题】:Consolidate data table factor levels in R在 R 中合并数据表因子水平
【发布时间】:2015-10-06 17:21:43
【问题描述】:

假设我有一个非常大的数据表,其中一列是“制造商名称”。数据没有统一输入,所以很乱。例如,可能有如下观察:

ABC Inc
ABC, Inc
ABC Incorporated
A.B.C.
...
Joe Shmos Plumbing
Joe Shmo Plumbing
...

我正在寻找一种在 R 中的自动化方式来尝试将相似的名称视为一个因素级别。我已经学会了手动执行此操作的语法,例如:

levels(df$ManufacturerName) <- list(ABC=c("ABC", "A.B.C", ....), JoeShmoPlumbing=c(...))

但我正在尝试想一个自动化的解决方案。显然它不会是完美的,因为我无法预测数据表中的每种排列类型。但也许可以搜索因子级别,去除标点符号/特殊字符,并根据常见的第一个单词创建级别。或任何其他想法。谢谢!

【问题讨论】:

  • data.table 指的是使用 data.table 包的特定 R 类。据我所知,您的问题与它无关(在这种情况下,它应该从帖子的标签中删除)。
  • 我在问如何对数据表做某事,这与数据表有什么关系?我不知道包裹是否有任何与我的问题相关的内容。我想如果不是,我们可以将其视为一个数据框。
  • 好的。没有可重复的例子很难说。

标签: r dataframe


【解决方案1】:

查看stringdist 包。对于初学者,您可以执行以下操作:

library(stringdist)

x <- c("ABC Inc", "ABC, Inc", "ABC Incorporated", "A.B.C.", "Joe Shmos Plumbing", "Joe Shmo Plumbing")
d <- stringdistmatrix(x)
#    1  2  3  4  5
# 2  1            
# 3  9 10         
# 4  6  7 15      
# 5 16 16 16 18   
# 6 15 15 15 17  1

如需更多帮助,请参阅 ?stringdistmatrix 或在 StackOverflow 上搜索模糊匹配、近似字符串匹配、字符串距离函数和 agrep

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多