添加具有匹配列名称的频率值

时间:2017-04-17 20:58:27

标签: r dataframe sum

我有以下数据框:

enter image description here

一些背景知识:

VAR1是唯一代码,VAR2是人员ID,FREQ是总计数。

例如,第1个人(P1)在代码ABCD中出现29次,在代码EFGH中也出现98次。我想要做的是,让它看起来像这样:

enter image description here

基本上,我只想要总数,所以Person 1使用了127次特定代码(VAR1)。 Person 2使用了14次唯一代码

我不确定如何让它发挥作用,因为我只是从R开始。

3 个答案:

答案 0 :(得分:3)

在基数R中(其中df是您的数据框):

aggregate(.~var2, df, sum)[,c(1,3)]

#  var2 freq
#1   p1  127
#2   p2   14
#3   p3  135

答案 1 :(得分:2)

使用dplyr我们可以做到这一点。假设df是数据框的名称:

library("dplyr")    
df %>% group_by(VAR2) %>% summarise(count = sum(VAR3))

答案 2 :(得分:0)

data.table解决方案:

library(data.table)
dt[, list(freq = sum(Freq)), by = Var2]

#   Var2 freq
#1:   P1  127
#2:   P2   14
#3:   P3  135

数据:

dt <- fread("Var1 Var2 Freq
            ABCD P1 29
            ABCD P2 2
            ABCD P3 12
            EFGH P1 98
            EFGH P2 12
            EFGH P3 123")