У меня есть этот длинный, аккуратный кадр данных, который я должен сделать широким.Теперь я обычно решаю эту проблему с помощью функции tidyr::spread()
.Но теперь мне приходится иметь дело с несколькими ключами, значениями и соглашениями об именах.
Мой примерный фрейм данных выглядит следующим образом:
library(tidyverse)
df <- structure(list(Jaar = c(2014, 2014, 2015, 2015), Gemeente = c("Aa en Hunze",
"Aa en Hunze", "Aa en Hunze", "Aa en Hunze"), aantal_inw = c(25286L,
25286L, 25286L, 25286L), Categorie = c("Bedrijven", "Evenementen",
"Bedrijven", "Evenementen"), incidenten = c(6, 13, 2, 8), per_1000inw = c(0.2,
0.5, 0.1, 0.3)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Jaar",
"Gemeente", "aantal_inw", "Categorie", "incidenten", "per_1000inw"
), row.names = c(NA, -4L))
# A tibble: 4 x 6
Jaar Gemeente aantal_inw Categorie incidenten per_1000inw
<dbl> <chr> <int> <chr> <dbl> <dbl>
1 2014 Aa en Hunze 25286 Bedrijven 6 0.2
2 2014 Aa en Hunze 25286 Evenementen 13 0.5
3 2015 Aa en Hunze 25286 Bedrijven 2 0.1
4 2015 Aa en Hunze 25286 Evenementen 8 0.3
Я хотел бы, чтобы все эти данные были в одной строке, где Gemeente
(муниципалитет) - это наблюдение.
Желаемый результат (как бы неопрятно это ни показалось ...) примерно такой:
tibble::tribble(
~Gemeente, ~aantal_inw, ~Bedrijven_2014_incidenten, ~Bedrijven_2015_incidenten, ~Evenementen_2014_incidenten, ~Evenementen_2015_incidenten, ~Bedrijven_2014_per_1000inw, ~Bedrijven_2015_per_1000inw, ~Evenementen_2014_per_1000inw, ~Evenementen_2015_per_1000inw,
"Aa en Hunze", 25286L, 6L, 2L, 13L, 8L, 0.2, 0.1, 0.5, 0.3
)
# A tibble: 1 x 10
Gemeente aantal_inw Bedrijven_2014_i… Bedrijven_2015_i… Evenementen_2014… Evenementen_201… Bedrijven_2014_… Bedrijven_2015_… Evenementen_201… Evenementen_201…
<chr> <int> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl>
1 Aa en Hunze 25286 6 2 13 8 0.2 0.1 0.5 0.3
Вся помощь очень ценится.