我正在使用
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
该代码适用于本示例,但对于真实的数据集,我却没有。有谁知道如何解决这个问题?预先感谢。
对于任何遇到此线程寻找类似问题解决方案并导致以下消息的人
1. NA Each element of '...' must be a named string.
检查您的字典中是否有“NA”或空白。一旦删除带有 NA 的行,您的 match_df() 命令应该适用于所有列。
祝你好运