【问题标题】:Is there a R function which can add a new column of cumulative values? [duplicate]是否有可以添加新的累积值列的 R 函数? [复制]
【发布时间】:2020-10-09 22:57:11
【问题描述】:

假设这是我的数据集:

  city  | date  | cases   
--------|-------|-------
 London | Day 1 |   4
 London | Day 2 |   6
 London | Day 3 |   9
 Paris  | Day 1 |   5
 Paris  | Day 2 |   3
 Paris  | Day 3 |   7
 Madrid | Day 1 |   2
 Madrid | Day 2 |   8
 Madrid | Day 3 |   4 

我可以使用 R 编程语言中的哪些代码从上表到下表?我很确定这可以使用 cumsum() 来完成,但我到底要写什么?另外,我可以使用任何替代功能吗?

  city    | date  | cases  | cumulative cases (by city) 
----------|-------|--------|------------------------
  London  | Day 1 |   4    |            4 
  London  | Day 2 |   6    |            10
  London  | Day 3 |   9    |            19
  Paris   | Day 1 |   5    |            5 
  Paris   | Day 2 |   3    |            8 
  Paris   | Day 3 |   7    |            15
  Madrid  | Day 1 |   3    |            3 
  Madrid  | Day 2 |   8    |            11
  Madrid  | Day 3 |   5    |            16

另外,如何为按日期排列的案例创建一个累积列,如下所示?

  city    | date  | cases  | cumulative cases (by date) 
----------|-------|--------|------------------------
  London  | Day 1 |   4    |            4 
  Paris   | Day 1 |   5    |            9 
  Madrid  | Day 1 |   3    |            12 *
  London  | Day 2 |   6    |            6
  Paris   | Day 2 |   3    |            9 
  Madrid  | Day 2 |   8    |            17 *
  London  | Day 3 |   9    |            9
  Paris   | Day 3 |   7    |            16
  Madrid  | Day 3 |   5    |            21 *

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: r function


    【解决方案1】:

    我们可以按“城市”分组

    df1new <- df1 %>%
                  group_by(city) %>%
                  mutate(cum_case_by_city = cumsum(cases))
    

    日期

    df1new <- df1 %>%
                 arrange(date)  %>%
                 group_by(date) %>%
                 mutate(cum_case_by_date = cumsum(cases))
    

    数据

    df1 <- structure(list(city = c("London", "London", "London", "Paris", 
    "Paris", "Paris", "Madrid", "Madrid", "Madrid"), date = c("Day 1", 
    "Day 2", "Day 3", "Day 1", "Day 2", "Day 3", "Day 1", "Day 2", 
    "Day 3"), cases = c(4L, 6L, 9L, 5L, 3L, 7L, 2L, 8L, 4L)), 
    class = "data.frame", row.names = c(NA, 
    -9L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多