Сравнение вхождения данных в двух группах - PullRequest
0 голосов
/ 29 июня 2018

У меня есть данные с именем_пользователя и группой.

User_Name    Group
MustafE       A
fischeta      A
LosperS1      A
MustafE       B    
fischeta      B  
jose          B  
MustafE       c   
fischeta      c 

Я хочу отметить тех клиентов, которые не являются повторяющимися группами. Пример - 'LosperS1' находится в группе A, но не в группе B, так же, как 'jose' находится в группе B, но не в группе C, поэтому в новой в столбце они будут помечены как «Нет в группе B / Нет в группе C»

Любая помощь будет оценена ..

1 Ответ

0 голосов
/ 01 июля 2018

Вот способ получить вывод, используя tidyverse. Получите distinct элементы столбца 'User_Name', пройдитесь по этим элементам (map), filter строк набора данных на основе присутствия зацикленных элементов в 'User_Name', paste элементов, которые не являются находится в столбце «Группа» по сравнению с отфильтрованной «Группой», задайте в первой строке (slice) и right_join исходный набор данных. Мы использовали map_df, чтобы получить конечный результат как один data.frame вместо list из data.frame

library(tidyverse)
df1 %>% 
   distinct(User_Name) %>% 
   pull(User_Name) %>% 
   map_df(~ df1 %>%
              filter(User_Name == .x) %>%
              mutate(Flag = toString(setdiff(unique(df1$Group), 
                                             unique(Group)))) %>% 
              slice(1) %>%
              select(-Group)) %>% 
              right_join(df1, "User_Name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...