获取R数据帧中唯一列组合的计数,而不从数据中删除重复列

时间:2017-07-25 18:38:39

标签: r dataframe

我有以下数据:

   A    B   C   D     E 
 1 130 288   6   80    57299 
 2 288 130   6   57299 80 
 3 288 130   6   57299 80 
 4 288 130   6   57299 80 
 5 288 130   6   57299 80 
 6 288 130   6   57299 80 
 7 288 130   6   57299 80  
 8 288 130   6   57299 80   
 9 288 130   6   57299 80 
10 130 288   6   80    57299 

我希望获得这些列的唯一组合计数,并将Frequency列附加到现有数据框,而不会消除重复的行。以下是我想要的

   A    B   C    D     E      Freq
 1 130 288   6   80    57299  2
 2 288 130   6   57299 80     8
 3 288 130   6   57299 80     8
 4 288 130   6   57299 80     8
 5 288 130   6   57299 80     8
 6 288 130   6   57299 80     8
 7 288 130   6   57299 80     8
 8 288 130   6   57299 80     8
 9 288 130   6   57299 80     8
10 130 288   6   80    57299  2

尝试df_0 <- count(df, A,B,C,D,E) %>% ungroup()给我

    A    B   C    D     E      Freq
 1 130 288   6   80    57299  2
 2 288 130   6   57299 80     8

消除重复。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

R dplyr mutate

dat%>%group_by_(.dots=names(dat))%>%dplyr::mutate(Freq=n())

Python transform

df['Freq']=df.groupby(list(df))['A'].transform('count')

答案 1 :(得分:2)

看起来你想要add_count

df_0 <- add_count(df, A,B,C,D,E)

来自?count的帮助页面:

  

add_tally()根据每个现有组中的项目数向表中添加“n”列,而add_count()也是执行分组的快捷方式。这些函数是tally()count(),因为mutate()summarise():它们会添加一个额外的列而不是折叠每个组。