Создание нового столбца в ddplyr с суммами по нескольким группам - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть фрейм данных (x) в ddplyr, который выглядит следующим образом:

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

По сути, мне нужно свернуть тип, чтобы все эти значения наблюдений (для каждого местоположения и метода) были сложены вместе и помещены в один столбец.

Пока что у меня есть следующее:

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

Проблема в том, что эта опция (и все другие, которые я пробовал) дает мне сумму количества строк вместо суммирования чисел внутри них.,У кого-нибудь есть идеи как это исправить?

1 Ответ

0 голосов
/ 07 сентября 2018

Исходя из вашего желаемого результата, похоже, что ваш скрипт уже делает то, что вы хотите. Добавление всех наблюдений для каждого местоположения и метода. (например, для За пределами и A , есть 1 и 5 наблюдений, вы хотите, чтобы Total_Observations было 6) Dplyr по умолчанию упорядочивает элементы по первому столбцу. Чтобы результат выглядел точно так же, как вы видели выше, я просто добавил утверждение «аранжировать».

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