Объединить таблицы по условию в R - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть две таблицы, к которым я хотел бы присоединиться по условию.

Data_1 <- data.frame(Section_A = c("a","a","a","a","a","b","b","b","b","b","b","c","c","c","c"), 
                     ID1 = c(1,2,3,4,5,10,11,12,13,14,15,20,21,22,23), 
                     Key = c("A","A","A","B","B","C","C","C","A","B","B","A","B","C","C"))

Data_2 <- data.frame(Section_B = c("d","d","d","d","d","d","e","e","e","f","f","f","f","f","f"), 
                     ID2 = c(31,32,33,34,35,36,41,42,43,54,55,56,57,58,59), 
                     Key = c("B","B","A","A","C","A","C","B","A","C","A","A","C","B","A"))

При присоединении к таблицам должны выполняться следующие условия:

  1. Раздел_А «уровень а» может «получить» не более 2 (количество (ID2) для Раздела_А ( а) <= 2) </li>
  2. Секция_A «уровень b» может «получать» не более 1 (количество (ID2) для Секции_A (b) <= 1) </li>
  3. Секция_A »уровня c "может" получить "не более 2 (количество (ID2) для Section_A (c) <= 2) </li>
  4. Section_B" уровень d "может" дать "не более 2 (количество (ID2)) для Section_B (d) <= 2) </li>
  5. Section_B "уровень e" может "дать" не более 2 (количество (ID2) для Section_B (e) <= 2) </li>
  6. Section_B " уровень f "может" дать "не более 1 (количество (ID2) для Section_B (f) <= 1) </li>
  7. Любой из ID1 и ID2 не может повторяться в объединенной таблице.

Ожидаемый результат:

Expected_Outcome <- data.frame(Section_A = c("a","a","b","c","c"), 
                               ID1 = c(1,2,10,20,21), 
                               Key = c("A","A","C","B","C"),
                               Section_B = c("d","d", "e","e","f"),
                               ID2 = c(33,34,41,42,57))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...