在ddplyr中创建一个具有多个分组总和的新列

时间:2018-09-07 19:01:32

标签: r dplyr formatting summarize

我在ddplyr中有一个数据帧(x),如下所示:

Location   Type   Method   Observations
Outside    Small  A        1
Outside    Large  A        5
Inside     Small  A        20
Inside     Large  A        17
Outside    Small  B        24
Outside    Large  B        0
Inside     Small  B        0
Inside     Large  B        12 
Outside    Small  C        6
Outside    Large  C        0
Inside     Small  C        1
Inside     Large  C        85

我要做的是创建一个新的数据框(y),其中按位置和方法列出了总观测值。像这样:

Location    Method    Total_Observations
Outside     A         6
Inside      A         37
Outside     B         24
Inside      B         12
Outside     C         6
Inside      C         86

基本上,我需要折叠Type,以便将所有这些观察值(针对每个位置和方法)加在一起并放在一列中。

到目前为止,我所拥有的是:

y <- x %>%
  group_by(Location,Method) %>%
  replace(is.na(.), 0) %>%
  summarise(Total_Observations = sum(Observations))

问题在于此选项(以及我尝试过的所有其他选项)为我提供了行数的总和,而不是将行中的数字相加。有谁知道如何解决此问题?

1 个答案:

答案 0 :(得分:-1)

根据所需的结果,脚本似乎已经完成了您想要的操作。将每个位置和方法的所有观测值相加。 (例如,对于 Outside A ,有1个和5个观测值,您希望 Total_Observations 为6)Dplyr默认情况下通过第一栏。为了使结果看起来与上面的结果完全一样,我仅添加了“ arrange”语句。

library(dplyr)
y <- x %>%
group_by(Location,Method) %>%
replace(is.na(.), 0) %>%
summarise(Total_Observations = sum(Observations)) %>%
arrange(Method, desc(Location))