首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中与stringdist_join()的模糊联接,错误:下标赋值中不允许使用NAs

R中与stringdist_join()的模糊联接,错误:下标赋值中不允许使用NAs
EN

Stack Overflow用户
提问于 2018-11-02 05:07:06
回答 2查看 1.9K关注 0票数 8

首先,如果我的格式不好,我很抱歉,这是我第一次发帖,(也是编程和R的新手)

我尝试在字符串变量上将两个数据帧合并在一起。我正在合并大学名称,它们可能不完全匹配,所以我希望使用模糊或近似字符串匹配函数进行合并。当我找到‘fuzzyjoin’包时,我很高兴。

来自cranR: stringdist_join:基于列的模糊字符串匹配连接两个表

代码语言:javascript
复制
stringdist_join(x, y, by = NULL, max_dist = 2, method = c("osa", "lv",
  "dl", "hamming", "lcs", "qgram", "cosine", "jaccard", "jw","soundex"), mode = "inner", ignore_case = FALSE, distance_col = NULL, ...)

我的代码:

代码语言:javascript
复制
stringdist_left_join(new, institutions, by = c("tm_9_undergradu" = "Institution.Name"))

错误:

代码语言:javascript
复制
Error in dists[include] <- stringdist::stringdist(v1[include], v2[include],  : 
NAs are not allowed in subscripted assignments

我知道在这些列中有一些NA,但我不确定如何删除它们,因为我也需要它们。据我所知,NA的其他连接和合并功能将被忽略。有没有人知道如何避免这个包的错误,或者以另一种方式对字符串进行近似连接。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-06-20 21:15:31

这个答案对我很有效,来自GitHub

步骤1:找出哪个Df拥有NAs

代码语言:javascript
复制
`which(is.na(df1))
 which(is.na(df2))`

步骤2:用其他东西替换NAsdf1[is.na(df1)] <- "empty_string"

步骤3:运行连接(收到错误时我正在使用的代码)

代码语言:javascript
复制
`test1 <- msa_table %>%
   as_tibble() %>% 
   unlist() %>%
   mutate(msa = sub("\\(.*)","", as.character(msa)) %>% 
   stringdist_full_join(msa_table, df1, by = 'msa', max_dist = 2)` 

对我来说,结果不是有相同的错误,但我的表中仍然有NAs

希望这能有所帮助!另外,需要明确的是:这个解决方案来自GitHub上的Anton Prokopyev '@prokopyev‘。

票数 4
EN

Stack Overflow用户

发布于 2020-03-20 00:28:43

试一试

代码语言:javascript
复制
`test1 <- msa_table %>%
    as_tibble() %>% 
    unlist() %>%
    mutate(msa = stringr::str_squish(msa)) %>% 
    stringdist_full_join(msa_table, df1, by = 'msa', max_dist = 2)` 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53109370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档