【问题标题】:Problem using cumsum() along mutate function [closed]沿 mutate 函数使用 cumsum() 的问题[关闭]
【发布时间】:2020-12-15 19:11:28
【问题描述】:

我有这个简化的df,我试图为每个组获取cumsum()

library(dplyr)

Country <- c(rep("A",5), rep("B",4), rep("C", 5))
Date <- 1:14
Value <- c(2:6, 10:13, 7:11)

df <- data.frame(Date, Country, Value)
> view(df)

    Date Country Value
     1       A     2
     2       A     3
     3       A     4
     4       A     5
     5       A     6
     6       B    10
     7       B    11
     8       B    12
     9       B    13
    10       C     7
    11       C     8
    12       C     9
    13       C    10
    14       C    11

我知道这似乎是一个重复的问题,但我正在执行以下操作,但不知道为什么不起作用。我得到的是所有列的cumsum,而不是按组的累积总和:

df_sum <- df%>%
    group_by(Country) %>%
  mutate(Sum = cumsum(Value))


   Date Country Value   Sum
   <int> <chr>   <int> <int>
      1  A           2     2
      2  A           3     5
      3  A           4     9
      4  A           5    14
      5  A           6    20
      6  B          10    30
      7  B          11    41
      8  B          12    53
      9  B          13    66
      10 C           7    73
      11 C           8    81
      12 C           9    90
      13 C          10   100
      14 C          11   111

【问题讨论】:

  • 如果我复制/粘贴您的代码,我不会得到相同的结果。您是否在新的 R 会话中尝试过此操作?你确定它是可重现的吗?
  • 它是可重现的。我认为问题是我昨天安装的一个包,并以某种方式与其他包混淆。还是谢谢你
  • 那么,你加载了哪些包?你的sessionInfo() 是什么样的?在新的 R 会话中,不应自动加载任何内容,因此您运行的代码可能比此处显示的要多。
  • 我只加载了 dplyr 哈哈。但是我认为搞砸的包是qpcR,因为我昨天遇到了一些麻烦。
  • 您能否通过向我们展示sessionInfo() 来验证您是否只加载了dplyr。只是安装其他软件包根本不应该有任何区别。仅在加载包时才重要。

标签: r dplyr cumsum


【解决方案1】:

有可能 OP 也加载了plyr 包,它用plyr::mutate 掩盖了dplyr::mutate。要么在仅加载 dplyr 的新 R 会话上执行此操作,要么指定 packagename::functionname dplyr::mutate

library(dplyr)
df%>%
  group_by(Country) %>%
  dplyr::mutate(Sum = cumsum(Value)) %>%
  ungroup

-输出

# A tibble: 14 x 4
#    Date Country Value   Sum
#   <int> <chr>   <int> <int>
# 1     1 A           2     2
# 2     2 A           3     5
# 3     3 A           4     9
# 4     4 A           5    14
# 5     5 A           6    20
# 6     6 B          10    10
# 7     7 B          11    21
# 8     8 B          12    33
# 9     9 B          13    46
#10    10 C           7     7
#11    11 C           8    15
#12    12 C           9    24
#13    13 C          10    34
#14    14 C          11    45

【讨论】:

  • 我认为问题是我昨天安装的一个包 (qpcR) 以某种方式与其他包混淆。您编写的代码运行良好。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2022-01-24
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多