typings uninstall
数据集中大约有~30周,每周都有重复的人员ID。
我想一次看四个星期的每个人的价值观(所以1-4周,5-9,10-13等等)。对于这些块中的每一个,我想要将所有“实际”列相加并将其除以“目标”列的总和。然后我们可以将该值放在名为“每月百分比”的列中。
根据Shape的推荐,我创建了一个月份列,如此
typings uninstall --save
试图找出如何迭代月份列并立即计算平均值。尝试这样的东西,但它显然不起作用:
>head(df)
person week target actual drop_out organization agency
1: QJ1 1 30 19 TRUE BB LLC
2: GJ2 1 30 18 FALSE BB LLC
3: LJ3 1 30 22 TRUE CC BBR
4: MJ4 1 30 24 FALSE CC BBR
5: PJ5 1 35 55 FALSE AA FUN
6: EJ6 1 35 50 FALSE AA FUN
答案 0 :(得分:1)
您是否尝试过创建群组变量?它允许您在四周的时间内对操作进行分组:
setDT(df1)[,grps:=ceiling(week/4) #Create 4-week groups
][,sum(actual)/sum(target), .(person, grps) #grouped operations
][,grps:=NULL][] #Remove unnecessary columns
# person V1
# 1: QJ1 1.1076923
# 2: GJ2 1.1128205
# 3: LJ3 0.9948718
# 4: MJ4 0.6333333
# 5: PJ5 1.2410256
# 6: EJ6 1.0263158
# 7: QJ1 1.2108108
# 8: GJ2 0.6378378
# 9: LJ3 0.9891892
# 10: MJ4 0.8564103
# 11: PJ5 1.1729730
# 12: EJ6 0.8666667