首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两组中增加两栏?

如何在两组中增加两栏?
EN

Stack Overflow用户
提问于 2019-09-30 21:39:06
回答 1查看 22关注 0票数 1

我想找出每个人在每个household.SAMPN中的总效用是家庭指数,PERNO是个人指数。每个人有两个实用程序,utility1和utility2。对于每个人,我想使用其他人的utility2添加该人的实用程序1。

代码语言:javascript
复制
     SAMPN     PERNO      utility1    utility2
      1         1           3             4
      1         2           4             5
      1         3           6             8
      2         1           1             2
      2         2           2             3 

输出

代码语言:javascript
复制
     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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 21:50:10

在按'SAMPN‘分组后,一个选项是获取’utility2 2‘的sum,从列'utility2’中减去不带元素的和,并在其中添加'utility1‘。

代码语言:javascript
复制
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

代码语言:javascript
复制
transform(df1, HHutility = utility1 + ave(utility2, SAMPN, FUN = sum) - utility2)

数据

代码语言:javascript
复制
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
))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58175592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档