在 R 中划分按区域分组的两列

dividing two columns grouped by region in R

我正在尝试按按区域分组的数量按月份划分两列。

我的数据集如下所示:

month   Amount  Region
10      2       APAC
20      5       EMEA
10      3       APAC
10      4       NA
4       3       NA

我试过下面的代码,但它给了我错误的答案

a <- t(aggregate(data$month/data$Amount, by=list(region=data$Region), FUN=sum))

我得到以下结果:

       [,1]       [,2]       [,3]      
region "APAC"     "EMEA"     "NA"      
x      "8.333333" "4.000000" "3.833333"

期望的输出是:

       [,1]       [,2]       [,3]      
region "APAC"     "EMEA"     "NA"      
x      "4            "4"      3"

然而这是不正确的。谁能告诉我哪里出错了?

我们可以先在Region中加上NA级,然后aggregate乘以Region再取sum,最后分列。

df$Region <- addNA(df$Region)
df1 <- aggregate(.~Region, df, sum)
df1$output <- df1$month/df1$Amount

df1
#  Region month Amount output
#1   APAC    20      5      4
#2   EMEA    20      5      4
#3   <NA>    14      7      2

使用 dplyr 可以像

一样完成
library(dplyr)

df %>%
  group_by(Region) %>%
  summarise_at(vars(month, Amount), sum) %>%
  mutate(output = month/Amount)