使用dplyr生成具有累积总和的新列

时间:2018-12-28 16:04:24

标签: r dplyr mutate

我正在尝试下一个练习:

data<-tbl_df(data.frame(A=c(6,3,2,4,5,3,3,4),
                        B=c(10,19,12,10,10,9,8,20),
                        C=c("A","B","C","A","A","C","C","B"),
                        D=c("AB","AB","AB","CD","CD","AB","CD","CD")))

data%>%group_by(C,D)%>%
  summarise(Frecuencia=n(),suma=sum(A),cumsum(suma))

我正在尝试使用列suma的累加总和来添加新列,但这不起作用。

    > data%>%group_by(C,D)%>%
+   summarise(Frecuencia=n(),suma=sum(A),cumsum(suma))
# A tibble: 6 x 5
# Groups:   C [?]
  C     D     Frecuencia  suma `cumsum(suma)`
  <fct> <fct>      <int> <dbl>          <dbl>
1 A     AB             1     6              6
2 A     CD             2     9              9
3 B     AB             1     3              3
4 B     CD             1     4              4
5 C     AB             2     5              5
6 C     CD             1     3              3

为什么不起作用?

在此示例中尝试使用mutate是可行的,但是在我的真实数据中,我无法获得结果。

1 个答案:

答案 0 :(得分:2)

我认为您无法使用函数正在创建的列来创建新列。另外,您可以使用mutate函数并添加一个保留现有列的新列。

此代码cumsums基于列C的每个值。如果您可以提供所需的输出,我可以更准确地回答您的问题。

代码:

data %>% group_by(C,D) %>%
  summarise(Frecuencia=n(),suma=sum(A)) %>%
  mutate(cumsum(suma))

输出:

enter image description here