R 如何就组和指标添加列的2值

R 如何就组和指标添加列的2值,r,dataframe,R,Dataframe,假设 Household person loop utility indicator 1 1 1 3 1 1 1 1 4 0 1 1 1 5 0 1

假设

  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,我想为每个循环的第一行和最后一行添加效用值。(如果循环第一行的指示器为1,则最后一行的指示器也为1)。同样,什么是循环中间行的指示符也无关紧要

第一个族中的第一个人:循环的第一行和最后一行中的指标是1,所以我将添加3+6,第二个循环的指标是0,所以我不需要它,您可以将其作为NA输入输出 输出


我们可以
过滤
组,其中
第一个
最后一个
指标
值为1,而
总和
第一个
最后一个
实用程序

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

我们可以
过滤
组,其中
第一个
最后一个
指标
值为1,而
总和
第一个
最后一个
实用程序

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
aggregate(utility~Household+person+loop, subset(df1, 
     ave(indicator == 1, Household, person, loop, 
          FUN = function(x) x[1L] & x[length(x)])), 
          function(x) x[1L] + x[length(x)])