首页 > 解决方案 > 比较两组数据的出现情况

问题描述

我有一个包含用户名和组的数据。

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组中没有”

任何帮助将不胜感激 ..

标签: rgroupingrepeatfind-occurrences

解决方案


这是一种使用tidyverse. 获取distinct“User_Name”列的元素,遍历这些元素map(“组”,将第一行 ( ) 和原始数据集作为子集。我们曾经将最终输出作为单个 data.frame 而不是filterpastesliceright_joinmap_dflistdata.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")

推荐阅读