группировать фрейм данных по значению для разных (неизвестных) значений - PullRequest
1 голос
/ 29 апреля 2020

Это пример фрейма данных:

Codes <- c("70", "70", "60", "60", "60", "60", "50")

Locations <- c("a", "a", "a", "b", "b", "b", "b")

df <- data.frame(Cases, Codes, Locations) 

Я хочу сгруппировать и суммировать коды, но для каждого местоположения. Это должна быть функция, которая работает с неизвестным количеством локаций. Результатом должен быть кадр данных (или два кадра данных (один для каждого местоположения)), который показывает мне количество случаев для каждого кода для каждого местоположения .

Я знаю, что это просто, если знать местоположение. Просто отфильтруйте фрейм данных для каждого местоположения и используйте «dplyr :: group_by» и «dplyr :: sumrize». Но я хочу, чтобы это была автоматическая c функция, где я заранее не знаю, сколько там разных мест.

Я пытался сделать это с помощью функции dplyr :: group_split, но она возвращает список столбцов, на которых я не могу выполнить dplyr :: group_by.

Это ожидаемый результат:

      Codes     Location A           Codes      Location B
      70            2                60            3
      60            1                50            1

Спасибо за ответ заранее, я борюсь с этим большим временем.

1 Ответ

1 голос
/ 07 мая 2020

Мы могли бы использовать count, а затем разделить фрейм данных на основе Location, чтобы получить список фреймов данных.

df_list <- df %>% count(Locations, Codes, sort = TRUE) %>% group_split(Locations)

#[[1]]
# A tibble: 2 x 3
#  Locations Codes     n
#  <chr>     <chr> <int>
#1 a         70        2
#2 a         60        1

#[[2]]
# A tibble: 2 x 3
#  Locations Codes     n
#  <chr>     <chr> <int>
#1 b         60        3
#2 b         50        1
...