Mam dataframe ze struktury panelu: 2 obserwacji dla każdej jednostki z dwóch lat:Jak kontrolować nazwy nowych zmiennych po rozprzestrzenianiu tidyr?
library(tidyr)
mydf <- data.frame(
id = rep(1:3, rep(2,3)),
year = rep(c(2012, 2013), 3),
value = runif(6)
)
mydf
# id year value
#1 1 2012 0.09668064
#2 1 2013 0.62739399
#3 2 2012 0.45618433
#4 2 2013 0.60347152
#5 3 2012 0.84537624
#6 3 2013 0.33466030
chciałbym przekształcić te dane do formatu szerokiego które można łatwo zrobić z tidyr::spread
. Ponieważ wartości zmiennej year
są liczbami, nazwy moich nowych zmiennych również stają się liczbami, co sprawia, że ich dalsze użycie jest trudniejsze.
spread(mydf, year, value)
# id 2012 2013
#1 1 0.09668064 0.6273940
#2 2 0.45618433 0.6034715
#3 3 0.84537624 0.3346603
Wiem, że mogę łatwo zmienić nazwę kolumny. Jednakże, jeśli chciałbym przekształcić w łańcuchu z innymi operacjami, staje się niewygodne. Na przykład. poniższy wiersz oczywiście nie ma sensu.
library(dplyr)
mydf %>% spread(year, value) %>% filter(2012 > 0.5)
Poniższe działa, ale nie jest to zwięzła:
tmp <- spread(mydf, year, value)
names(tmp) <- c("id", "y2012", "y2013")
filter(tmp, y2012 > 0.5)
Każdy pomysł, w jaki sposób mogę zmienić nowe nazwy zmiennych wewnątrz spread
?