r - 如何计算聚合数据并创建不同的计数器?

标签 r aggregate

我有一个包含不同列的数据框 df

df = data.frame(c("2012","2012","2012","2013"),
                c("AAA","BBB","AAA","AAA"),
                c("X","Not-serviced","X","Y"))
colnames(df) = c("year","type","service_type")

我需要获取以下数据帧df2:

year    type    num_serviced   num_notserviced   num_total
2012    AAA     2              0                 2
...

因此,我需要按typeyear 对数据进行分组,然后计算Not-serviced 和所有其他项的频率,例如XY 等(假定为已服务)。

这是我计算总计的代码:

temp = aggregate(df,
                 list(type = dat_human_errors$type,
                      year = dat_human_errors$year),
                 FUN = function(x){NROW(x)})

但是如何创建num_servicednum_notserviced 呢?应该有一些 IF-THEN 规则,例如 if type=="Not-serviced"num_notserviced++ else num_serviced++

最佳答案

我们可以尝试使用data.table。将'data.frame'转换为'data.table'(setDT(df)),按'year','type'分组,得到逻辑向量的sum , 最后求和。

library(data.table)
setDT(df)[, .(num_serviced = sum(service_type != "Not-serviced"), 
      num_notserviced = sum(service_type =="Not_serviced")), 
     .(year, type)][, Total := num_serviced + num_notserviced][]

关于r - 如何计算聚合数据并创建不同的计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172480/

相关文章:

从 sparklyr 中的多个子文件夹读取文件

R ggplot2 堆叠条形图,y 轴上的百分比,以条形计数

sql-server - 按公共(public)列分组的多个表中的值求和

python-3.x - 如何使用 Python Pandas 将列的日期聚合到每个人的日期列表中?

r - 是否可以在合并中使用列索引?

r - 如何将列表的所有元素放入/保存到 R 中的一张 Excel 工作表中?

r - 确定传递给函数的值是否是一个变量

python - 字典列表 : aggregate value by grouping by inner dictionary key

python - 在 Pandas 中重采样和归一化不规则时间序列数据

r - 如何按日期对数据框进行分组?