我有一些样本数据
data1 = data.frame(name = c("cat", "dog", "parrot"), freq = c(1,2,3))
data2 = data.frame(name = c("Cat", "snake", "Dog", freq2 = c(2,3,4)))
data1$name = as.character(data1$name)
data2$name = as.character(data2$name)
我想加入,但是例如“ cat”和“ Cat”应被视为相同的值。我想到了先使用tolower
来确定出现在两个数据框中的条目
in_both = data1[(tolower(data1$name) %in% tolower(data2$name)),]
然后,我想加入data2
,但由于名称不匹配而无法正常工作。
library(dplyr)
left_join(in_both, data2)
有没有一种使用方式加入tolower
?
如果您不想更改原始data2
文档(如@AshofFire建议的那样),可以对name
管道中的值进行大写转换,%>%
然后执行联接操作:
data2 %>%
mutate(name = str_to_lower(name)) %>%
inner_join(data1, by = "name")
name freq2 freq
1 cat 2 1
2 dog 4 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句