我想找出每个人在每个household.SAMPN中的总效用是家庭指数,PERNO是个人指数。每个人有两个实用程序,utility1和utility2。对于每个人,我想使用其他人的utility2添加该人的实用程序1。
SAMPN PERNO utility1 utility2
1 1 3 4
1 2 4 5
1 3 6 8
2 1 1 2
2 2 2 3 输出
SAMPN PERNO utility1 utility2 HH-utility
1 1 3 4 3+5+8=16
1 2 4 5 4+4+8=16
1 3 6 8 6+4+5=15
2 1 1 2 1+3=4
2 2 2 3 2+2=4发布于 2019-09-30 21:50:10
在按'SAMPN‘分组后,一个选项是获取’utility2 2‘的sum,从列'utility2’中减去不带元素的和,并在其中添加'utility1‘。
library(dplyr)
df1 %>%
group_by(SAMPN) %>%
mutate(HHutility = sum(utility2) - utility2 + utility1)
# A tibble: 5 x 5
# Groups: SAMPN [2]
# SAMPN PERNO utility1 utility2 HHutility
# <int> <int> <int> <int> <int>
#1 1 1 3 4 16
#2 1 2 4 5 16
#3 1 3 6 8 15
#4 2 1 1 2 4
#5 2 2 2 3 4或使用base R
transform(df1, HHutility = utility1 + ave(utility2, SAMPN, FUN = sum) - utility2)数据
df1 <- structure(list(SAMPN = c(1L, 1L, 1L, 2L, 2L), PERNO = c(1L, 2L,
3L, 1L, 2L), utility1 = c(3L, 4L, 6L, 1L, 2L), utility2 = c(4L,
5L, 8L, 2L, 3L)), class = "data.frame", row.names = c(NA, -5L
))https://stackoverflow.com/questions/58175592
复制相似问题