假设我有以下数据:
df<- data.frame(
id = c(1,1,1,1,2,2,2,3,3,4,4,4,5,5,5,5,5,6),
age =c (41,43,20,8,33,30,6,45,90,60,7,3,50,50,7,1,83,45),
activity = c(412,442,0,0,419,413,0,421,0,412,0,0,421,411,0,0,0,425),
minute = c(10,15,0,0,20,15,0,25,0,20,0,0,25,20,0,0,0,30)
)
我想要的是确定专栏消费者的价值,那些从制作人生产的活动中受益的人.列id
对于所有家庭成员都是相同的.activity
栏显示一个会员做了什么活动;412、442、413、419和411是只为15岁以下 children 做的活动,421和425是成人做的活动,15岁以上的人;'activity
栏价值非零的人是生产者,其他人是潜在消费者.第minute
栏显示花在一项活动上的时间.当我确定消费者时,我必须将"分钟"列的值分配给消费者.如果一个家庭中有不止一个消费者,我必须为所有消费者分配相同的时间.
我的预期yields 是这样的:
id age activity minute consumers
1 1 41 412 10 0
2 1 43 442 15 0
3 1 20 0 0 25
4 1 8 0 0 25
5 2 33 419 20 0
6 2 30 413 15 0
7 2 6 0 0 35
8 3 45 421 25 0
9 3 90 0 0 25
10 4 60 412 20 0
11 4 7 0 0 20
12 4 3 0 0 20
13 5 50 421 25 0
14 5 50 411 20 0
15 5 7 0 0 20
16 5 1 0 0 20
17 5 83 0 0 25
18 6 45 425 30 30
我try 了以下代码,但似乎不是基于我的预期输出:
df <- df %>%
group_by(id) %>%
mutate(
consumers = ifelse(activity == 0 & age > 15, sum(minute), 0)
)
提前谢谢你.