разделив две колонки сгруппированы по регионам в R - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь разделить два столбца по месяцам на количество, сгруппированное по регионам.

Мой набор данных выглядит следующим образом:

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"

Однако это неверно.Может кто-нибудь сказать, где я иду не так?

1 Ответ

0 голосов
/ 11 июня 2019

Сначала мы можем добавить NA уровень в Region, затем 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)
...