R:根据四行组创建一列平均值

时间:2016-07-06 20:15:08

标签: r

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

1 个答案:

答案 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