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)])