Tengo un gran conjunto de datos y estoy tratando de crear una tabla que muestre el número de observaciones en cada código postal para cada año. La parte complicada es que necesito que cada columna sea un año y que las filas sean el número de observaciones de cada código postal en cada año. Algunos códigos postales no tienen observaciones en uno de los años, por lo que debería haber algunos espacios vacíos. Solo sé cómo crear tres tablas separadas con los tres años separados, que es para lo que sirve el código a continuación. ¿Alguien podría ayudarme básicamente a combinar esto en una tabla?

BuildingZipCodes18 <- Data %>% 
  filter(year(`Issued Date`) == 2018) %>%
  group_by(`Zip`) %>%
  summarise("2018" = n())

BuildingZipCodes19 <- Data %>% 
  filter(year(`Issued Date`) == 2019) %>%
  group_by(`Zip`) %>%
  summarise("2019" = n())


 BuildingZipCodes20 <- Data %>% 
  filter(year(`Issued Date`) == 2020) %>%
  group_by(`Zip`) %>%
  summarise("2020" = n())

enter image description here

r
1
Ben 20 ene. 2021 a las 04:26

1 respuesta

La mejor respuesta

En lugar de filtrar datos para cada año, intente usar count que le dará el número de filas para cada código Zip en cada año.

library(dplyr)
result <- Data %>% count(Zip, year = lubridate::year(`Issued Date`))

En base R, podría usar table:

table(Data$Zip, format(Data$`Issued Date`, '%Y'))
0
Ronak Shah 20 ene. 2021 a las 01:54