Тестовое состояние двух столбцов по группам - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь создать новый столбец, который проверяет группу (идентификатор и номер), если два столбца имеют одинаковые наблюдения (классификация и классификация-1 ").

Это исходный фрейм данных:

reprex <- tribble(~"id",    ~"number",  ~"year",   ~"classification",          ~"classification-1",
                  5,        7020,    2015,    "Trading de servicios",    "Servicios empresariales",
                  2,        4649,    2015,                 "Trading",                  "Comercial",
                  2,        4649,    2015,               "Comercial",                    "Trading",
                  2,        4649,    2016,                 "Trading",                  "Comercial",
                  2,        4649,    2016,               "Comercial",                    "Trading",
                  3,        4651,      2015,                   "Trading",                    "Comercial",
                  3,        4651,      2015,                   "Trading",                   "Comisiones",
                  3,        4651,      2015,                 "Comercial",                      "Trading",
                  3,        4651,      2015,                 "Comercial",                   "Comisiones")

Я хочу получить это:

reprex <- tribble(~"id",    ~"number",  ~"year",   ~"classification",          ~"classification-1", ~"check",
                  5,        7020,    2015,    "Trading de servicios",    "Servicios empresariales",        T,
                  2,        4649,    2015,                 "Trading",                  "Comercial",        T
                  2,        4649,    2015,               "Comercial",                    "Trading",        T
                  2,        4649,    2016,                 "Trading",                  "Comercial",        T
                  2,        4649,    2016,               "Comercial",                    "Trading",        T
                  3,        4651,      2015,                   "Trading",                    "Comercial",        F
                  3,        4651,      2015,                   "Trading",                   "Comisiones",        F
                  3,        4651,      2015,                 "Comercial",                      "Trading",        F
                  3,        4651,      2015,                 "Comercial",                   "Comisiones",        F)

1 Ответ

1 голос
/ 17 мая 2019

Возможно, это поможет

library(dplyr)
reprex %>%
    group_by(id, number) %>% 
    mutate(check = length(intersect(classification, `classification-1`)) > 0)

Если нам нужно проверить all элементы unique, то после группировки по 'id', 'number', получите элементы unique обоих classification, classification-1, проверьте, являются ли они равно setequal

reprex %>%
    group_by(id, number) %>%
    mutate(check = setequal(sort(unique(classification)), 
                              sort(unique(`classification-1`))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...