如何合并同一数据框中的重复类别?

时间:2019-04-15 01:51:35

标签: r dataframe dplyr tidyr

我正在尝试计算与每个活跃投资者相关的公司总数。

'df'代表我的原始数据框,其中的'active_investors'列显示列出的每个公司的活跃投资者列表。例如,一行可能包含公司A,列出了投资者1,2,3,4。

我想做的是拆分数据框,以便将公司A显示为四个单独的行,即为每个投资者1、2、3和4。

到目前为止,我有以下代码:

#Separate names of investors for each company
df1 = df %>% separate_rows(active_investors, sep = ",")

#Total number of companies each investor has invested in 
investor = aggregate(data.frame(count = df1$company_name), list(active_investors = df1$active_investors), length)

问题在于某些投资者被列出两次,即,相同的投资者名称,但被列为两个单独的投资者。我不确定如何编制频率(即投资者投资的公司总数),以便删除这些重复项。

1 个答案:

答案 0 :(得分:0)

尝试一下:

(df <- data.frame(company_name=c(1:3),b=c("1,2,3","2,3,4","4,5"))) 
test_investors <- df %>% 
                  mutate(b1 = str_split(string=b,pattern=",")) %>% 
                  select(b1) %>% 
                  pull(.) 
 max_investors <- lapply(test_investors,function(x)length(x)) %>% 
                   unlist(.) %>% 
                  max(.)
 unique_investors <- df %>% 
                      separate(b,sep=",",
                              into=paste0("investor_",c(1:max_investors))) %>% 
                     select(company_name,starts_with("investor_")) %>% 
                     gather(-company_name,key="variable",value="investor") %>% 
                     filter(!is.na(investor)) %>% 
                     select(-variable)