在dplyr连接中忽略大小写敏感性

run*_*rds 8 r inner-join left-join dplyr

有没有办法在使用dplyr进行连接时忽略大小写敏感?左,内,全?

我认为它适用于选择,但这对我来说通常是一个巨大的痛苦.我知道我可以手动转换列toupper或tolower,但这将是一个有用的工作.

Ibo*_*Ibo 7

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

require(fuzzyjoin)
regex_inner_join(x,y,by="id", ignore_case =TRUE)
Run Code Online (Sandbox Code Playgroud)

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

regex_inner_join(x,y,by=c("xid"="yid"), ignore_case =TRUE)
Run Code Online (Sandbox Code Playgroud)


Dam*_*ian 6

我认为没有一种直接使用tolowertoupper整理数据的简单方法。也就是说,如果需要,内联mutate(在连接内部)会使原始数据保持不变。

X %>% left_join(Y %>% mutate(id = tolower(id)), by = "id")`
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是我们也可以创建一个整洁的Y,其ID首先匹配X(在我看来)。

  • 而不是弄乱单个列的混乱,我可能会做一些类似的事情,例如`...%>%setNames(。,tolower(names(。)))%>%...` (2认同)