Załóżmy, że mamy ramkę danych, który wygląda jakZmiana kształtu ramki danych --- zmianę wierszy do kolumn
set.seed(7302012)
county <- rep(letters[1:4], each=2)
state <- rep(LETTERS[1], times=8)
industry <- rep(c("construction", "manufacturing"), 4)
employment <- round(rnorm(8, 100, 50), 0)
establishments <- round(rnorm(8, 20, 5), 0)
data <- data.frame(state, county, industry, employment, establishments)
state county industry employment establishments
1 A a construction 146 19
2 A a manufacturing 110 20
3 A b construction 121 10
4 A b manufacturing 90 27
5 A c construction 197 18
6 A c manufacturing 73 29
7 A d construction 98 30
8 A d manufacturing 102 19
Chcielibyśmy przekształcić to tak, że każdy wiersz reprezentuje (stan) i powiatu, raczej niż w przemyśle powiatowym, z kolumnami construction.employment
, i analogicznymi wersjami do produkcji. Jaki jest skuteczny sposób na zrobienie tego?
Jednym ze sposobów jest podzbiór
construction <- data[data$industry == "construction", ]
names(construction)[4:5] <- c("construction.employment", "construction.establishments")
i podobnie do produkcji, a następnie wykonaj korespondencji seryjnej. Nie jest tak źle, jeśli istnieją tylko dwa branże, ale wyobraź sobie, że jest ich 14; proces ten stałby się żmudny (choć w mniejszym stopniu dzięki zastosowaniu pętli for
na poziomach industry
).
Jakieś inne pomysły?
Ah, ok, użyłem '.' zamiast' ... ', więc to nie działało. Dzięki! – Charlie