операции группы dplyr добавление - PullRequest
1 голос
/ 19 апреля 2020

Вот мои данные:

places <- c("London", "London", "London", "Paris", "Paris", "Rennes")
years <- c(2019, 2019, 2020, 2019, 2019, 2020)

dataset <- data.frame(years, places)

Результат:

    years   places
1   2019    London
2   2019    London
3   2020    London
4   2019    Paris
5   2019    Paris
6   2020    Rennes

Я считаю по месту и годам

dataset2 <-  dataset %>%
count(places, years)



 places  years  n
1   London  2019    2
2   London  2020    1
3   Paris   2019    2
4   Rennes  2020    1

Я хочу, чтобы мой стол Покажите два года для каждого города, даже если значения отсутствуют.

 places  years  n
 1   London 2019    2
 2   London 2020    1
 3   Paris  2019    2
 4   Paris   2020    NA  # or better 0
 5   Rennes  2019    NA  # or better 0
 6   Rennes 2020    1

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Вы можете использовать complete из tidyr для заполнения отсутствующей последовательности:

library(dplyr)
library(tidyr)

dataset %>% count(places, years) %>% complete(places, years, fill = list(n = 0))

Если вы конвертируете years в factor, вы можете указать .drop = FALSE.

dataset %>% mutate(years = factor(years)) %>% count(places, years, .drop = FALSE)

#  places years     n
#  <fct>  <fct> <int>
#1 London 2019      2
#2 London 2020      1
#3 Paris  2019      2
#4 Paris  2020      0
#5 Rennes 2019      0
#6 Rennes 2020      1
0 голосов
/ 19 апреля 2020

Мы можем использовать CJ от data.table

library(data.table)
 setDT(dataset)[, .N, .(years, places)][CJ(years, places, unique = TRUE), on = .(years, places)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...