Я хотел бы выполнить сложное объединение, которое рассматривает несколько столбцов как различные виды критериев.
Я хочу назначить каждому фрукту категорию, основанную на том, содержит ли он строку, строки он может содержать и строки, которые он НЕ содержит.
У меня есть вектор фруктов:
head(fruit)
[1] "apple" "apricot" "avocado" "banana" "bell pepper" "bilberry"
И критерии назначения каждого фрукта подробно описаны здесь:
fruitAssignment <- data.frame(assignment = c('Apple','Berry','Black','Melon','Melon','Melon','Currant'),
contains = c('apple','berry','black','honeydew','melon','cantaloupe','currant'),
mayContain = c(NA,'black',NA,NA,NA,NA,NA),
doesNotContain = c(NA,NA,'berry',NA,NA,NA,NA))
assignment contains mayContain doesNotContain
1 Apple apple <NA> <NA>
2 Berry berry black <NA>
3 Black black <NA> berry
4 Melon honeydew <NA> <NA>
5 Melon melon <NA> <NA>
6 Melon cantaloupe <NA> <NA>
7 Currant currant <NA> <NA>
Исключения:
- Если нет заданий, соответствующих критериям, я бы хотел назначить фрукт просто как «Фрукт».
- Если есть несколько заданий, которые соответствуют критериям, я также хотел бы назначить его как «Фрукт».
- Критерии не должны быть чувствительными к регистру.
Таким образом, этот пример объединения будет выглядеть следующим образом:
dplyr::sample_n(fruit, size=5)
fruit assignment
1 redcurrant Currant
2 blackcurrant Fruit
3 pineapple Apple
4 blackberry Berry
5 coconut Fruit
Независимо от того, какие пакеты используются для выполнения это нормально.