gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:45:27 24 4
gpt4 key购买 nike

我有一个包含不同列的数据框 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com