如何将一个组的两个值和一个指标相加

时间:2019-09-13 03:22:35

标签: r dataframe

假设

  Household     person     loop     utility      indicator
      1           1          1        3             1    
      1           1          1        4             0    
      1           1          1        5             0    
      1           1          1        6             1 
      1           1          2        3             0    
      1           1          2        3             0       
      1           2          1        2             1    
      1           2          1        7             1    
      1           2          1        8             1 
      2           1          1        3             0    
      2           1          1        3             0

在每个家庭和每个人中,如果指标为1,我想为每个循环的第一行和最后一行添加Utility的值。 (如果指标对于循环的第一行为1,那么对于最后一行也为1)。循环中间行的指示符也没关系

第一个家庭中的第一人称:指标在循环的第一行和最后一行是1,所以我将添加3 + 6,对于他的第二个循环,指示符是0,所以我不需要它,可以将其放入不适用 输出

  Household     person     loop     utility      
      1           1          1        3 +6                                               
      1           2          1        2 +8               

1 个答案:

答案 0 :(得分:1)

我们可以filter个分组,其中firstlast indicator的值为1,sum firstlast {{ 1}}的价值。

utility

在基数R中,它有点长

library(dplyr)

df1 %>%
  group_by(Household, person, loop) %>%
  filter(first(indicator) == 1 & last(indicator) == 1) %>%
  summarise(utility = first(utility) + last(utility))

#  Household person  loop utility
#      <int>  <int> <int>   <int>
#1         1      1     1       9
#2         1      2     1      10