如何解决行绑定或注释数据框,基于在列上使用之间的匹配
我的数据或多或少是这样的:
dictionary <- data.frame(fruit = c("apple","banana","kiwi"),min_range = c(1,520,1200),max_range= c(519,900,1800))
data <- data.frame(dictionary_id = c(12,600,1500,3050,2))
我想使用 data
最小和最大范围注释数据框 dictionary
。在两者之间使用 dplyr 不起作用,因为我会将它传递给它不接受的列。
我的方法是在 mutate() 中创建一个 if_else 语句,原则上它的工作方式如下:
data %>%
mutate(fruit = if_else(dictionary_id >= dictionary$min_range & dictionary_id <= dictionary$max_range,dictionary$fruit,"error"))
有什么想法吗?谢谢!
解决方法
您可以使用fuzzyjoin
fuzzyjoin::fuzzy_left_join(data,dictionary,by = c('dictionary_id' = 'min_range','dictionary_id' = 'max_range'),match_fun = c(`>=`,`<=`))
# dictionary_id fruit min_range max_range
#1 12 apple 1 519
#2 600 banana 520 900
#3 1500 kiwi 1200 1800
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。