首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:基于条件的单列求和

R:基于条件的单列求和
EN

Stack Overflow用户
提问于 2018-04-08 00:35:58
回答 1查看 31关注 0票数 1

我有一个数据集(在这个站点的帮助下)创建了一个基于3个实例的计数:

  1. Plans数,其中Coins大于20
  2. Plans数,其中Coins等于20
  3. Plans数,其中Coins小于20

这里有一个来自大得多的数据集的示例

代码语言:javascript
复制
Plan    Year   Coins   Copay   Enrollment
  A     2018     20      10       200
  B     2014     15       5       100
  C     2012     30       0        50
  D     2017     30      10       350
  E     2018     5       10       400
  F     2018     20       0       150
  G     2018     20       0       200
  H     2016     20      10       800
  I     2014     10       3       250
  J     2017     20       7       550

这是通过以下途径实现的:

代码语言:javascript
复制
df %>%
   group_by(grp = case_when(Coins < 20 ~ 'grp1', Coins ==20 ~ 'grp2', TRUE ~ 'grp3')) %>%
   summarise(Plan = toString(unique(Plan)), prop = n()) %>%
   ungroup %>%
   select(-grp)

得到:

  1. C,D-2
  2. A、F、G、H、J-5
  3. B、E、I-3

现在,我想根据上述三个条件涉及Enrollment列和sum。因此,我希望做到以下几点:

  1. 400 (50+350)
  2. 1900年(200+150+200+800+550)
  3. 750 (100+400+250)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 00:42:33

您可以在使用counts = sum(Enrollment)之前添加ungroup摘要。

代码语言:javascript
复制
library(tidyverse);
df %>%
    group_by(grp = case_when(Coins < 20 ~ 'grp1', Coins ==20 ~ 'grp2', TRUE ~ 'grp3')) %>%
    group_by(grp) %>%
    summarise(
        Plan = toString(unique(Plan)),
        prop = n(),
        counts = sum(Enrollment)) %>%
    ungroup() %>%
    select(-grp);
## A tibble: 3 x 4
#  Plan           prop counts
#  <chr>         <int>  <int>
#1 B, E, I           3    750
#2 A, F, G, H, J     5   1900
#3 C, D              2    400

样本数据

代码语言:javascript
复制
df <- read.table(text =
    "Plan    Year   Coins   Copay   Enrollment
  A     2018     20      10       200
  B     2014     15       5       100
  C     2012     30       0        50
  D     2017     30      10       350
  E     2018     5       10       400
  F     2018     20       0       150
  G     2018     20       0       200
  H     2016     20      10       800
  I     2014     10       3       250
  J     2017     20       7       550", header = T)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49713307

复制
相关文章

相似问题

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