在 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)
我正在尝试按按区域分组的数量按月份划分两列。
我的数据集如下所示:
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)