来自 matchmaker 的 match_df 不适用于所有列?

问题描述 投票:0回答:1

我正在使用

matchmaker
包清理字符串数据。我使用
from
to
col
列创建了字典,以定义未清理术语、已清理术语以及可在文件中找到未清理术语的列名称。

原始数据看起来像这样

ID <- 1:5
var1 <- c("aaa", "bbb", "ccc", "ddd", NA)
var2 <- c("ccc", "ddd", NA, NA,"aaa")
var3 <- c(NA, NA, "bbb", NA, "aaa")

df <- data.frame(ID, var1, var2, var3)

这是字典的样子

from <- c("aaa", "bbb", "ccc", "ddd", 
          "ccc", "ddd", "aaa", 
          "bbb", "aaa")
to <- c("Aaa", "Bbb", "Ccc", "Ddd", 
        "Ccc", "Ddd", "Aaa", 
        "Bbb", "Aaa")
col <- c("var1", "var1", "var1", "var1", 
         "var2", "var2", "var2", 
         "var3", "var3")

dictionary <- data.frame(from, to, col)

我使用了以下代码:

library(matchmaker)
match_df(df, dictionary = dictionary, 
              from = "from", 
              to = "to", 
              by = "col")

这是我期望的结果:

  ID var1 var2 var3
1  1  Aaa  Ccc <NA>
2  2  Bbb  Ddd <NA>
3  3  Ccc <NA>  Bbb
4  4  Ddd <NA> <NA>
5  5 <NA>  Aaa  Aaa

这是我得到的结果

  ID var1 var2 var3
1  1  aaa  Ccc <NA>
2  2  bbb  Ddd <NA>
3  3  ccc <NA>  Bbb
4  4  ddd <NA> <NA>
5  5 <NA>  Aaa  Aaa

该代码适用于本示例,但对于真实的数据集,我却没有。有谁知道如何解决这个问题?预先感谢。

r string data-cleaning
1个回答
0
投票

对于任何遇到此线程寻找类似问题解决方案并导致以下消息的人

1. NA Each element of '...' must be a named string.

检查您的字典中是否有“NA”或空白。一旦删除带有 NA 的行,您的 match_df() 命令应该适用于所有列。

祝你好运

© www.soinside.com 2019 - 2024. All rights reserved.