Добавление значений строк с похожими переменными в r - PullRequest
1 голос
/ 04 мая 2020

У меня есть этот фрейм данных в r:

  date        state    fips  cases  deaths
2020-01-21  Washington  53     1      0
2020-01-22  Washington  53     1      0
2020-01-23  Washington  53     3      1
2020-01-24  Illinois    17     6      1
2020-01-24  Washington  53     1      0
2020-01-25  California  6      34     3
2020-01-25  Illinois    17     3      1
2020-01-25  Washington  53     5      2
2020-01-26  Arizona     4      1      0 
2020-01-26  California  6      10     1
2020-01-26  Illinois    17     1      0

Как мне настроить его так, чтобы он был похож на:

  state    fips  cases  deaths
Arizona     4      1      0
California  6      44     4
Illinois    17     10     2
Washington  53     11     3

Я использую dplyr, поэтому было бы что-то вроде:

df <- c_states %>%
   group_by(state) %>%
   summarise(cases)

или что-то в этом роде?

1 Ответ

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

Мы можем сгруппировать как 'state', так и 'fips', а затем использовать summarise_at

library(dplyr)
c_states %>%
    group_by(state, fips) %>%
    summarise_at(vars(cases, deaths), sum)
# A tibble: 4 x 4
# Groups:   state [4]
#  state       fips cases deaths
#  <chr>      <int> <int>  <int>
#1 Arizona        4     1      0
#2 California     6    44      4
#3 Illinois      17    10      2
#4 Washington    53    11      3

или использовать summarise с across

c_states %>%
    group_by(state, fips) %>%
    summarise(across(c(cases, deaths), sum))

данные

c_states <- structure(list(date = c("2020-01-21", "2020-01-22", "2020-01-23", 
"2020-01-24", "2020-01-24", "2020-01-25", "2020-01-25", "2020-01-25", 
"2020-01-26", "2020-01-26", "2020-01-26"), state = c("Washington", 
"Washington", "Washington", "Illinois", "Washington", "California", 
"Illinois", "Washington", "Arizona", "California", "Illinois"
), fips = c(53L, 53L, 53L, 17L, 53L, 6L, 17L, 53L, 4L, 6L, 17L
), cases = c(1L, 1L, 3L, 6L, 1L, 34L, 3L, 5L, 1L, 10L, 1L), deaths = c(0L, 
0L, 1L, 1L, 0L, 3L, 1L, 2L, 0L, 1L, 0L)), class = "data.frame",
row.names = c(NA, 
-11L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...