【问题标题】:Ignoring case sensitvity in dplyr joins忽略 dplyr 连接中的大小写敏感性
【发布时间】:2016-09-17 07:11:36
【问题描述】:

有没有办法在使用 dplyr 进行连接时忽略大小写?左、内、满?

我看到它适用于 select 但这对我来说通常是一个巨大的痛苦。我知道我可以事先将列转换为上或下,但这将是一个有用的解决方法。

【问题讨论】:

标签: r left-join inner-join dplyr


【解决方案1】:

我认为没有一种直接的方法可以先使用tolowertoupper 整理数据。也就是说,如果愿意,内联 mutate(在联接内)将保持原始数据不变。

X %>% left_join(Y %>% mutate(id = tolower(id)), by = "id")

它有效,但我们不妨先创建一个带有 id 的整洁 Y 来匹配 X(在我看来)。

【讨论】:

  • 我可能会做类似...%>% setNames(., tolower(names(.))) %>% ... 之类的操作来获取所有列,而不是弄乱各个列
【解决方案2】:

dplyr 还没有这样的选项,但是使用fuzzyjoin 你可以很容易地做到这一点:

require(fuzzyjoin)
regex_inner_join(x,y,by="id", ignore_case =TRUE)

如果你在 x 和 y 中有不同的列名:

regex_inner_join(x,y,by=c("xid"="yid"), ignore_case =TRUE)

【讨论】:

  • 第一个连接中有两个右括号和一个左括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2013-04-04
  • 2023-03-24
相关资源
最近更新 更多