Jak zmienić kształt ramki danych za pomocą kolumn „powtarzających się”?
Jestem nowy w analizie danych z R. Niedawno dostałem wstępnie sformatowany zestaw danych modelu obserwacji środowiska, którego przykładowy podzbiór jest pokazany poniżej:
date site obs mod site obs mod
2000-09-01 00:00:00 campus NA 61.63 city centre 66 56.69
2000-09-01 01:00:00 campus 52 62.55 city centre NA 54.75
2000-09-01 02:00:00 campus 52 63.52 city centre 56 54.65
Zasadniczo dane obejmują szeregi czasowe obserwowanych godzinowo i modelowanych stężeń substancji zanieczyszczających w różnych miejscach w „powtarzających się kolumnach”, tj. Site-obs-mod (w przykładzie pokazałem tylko 2 z wszystkich 75 miejsc). Przeczytałem ten „szeroki” zbiór danych jako ramkę danych i chciałem przekształcić go w „węższy” format jako:
date site obs mod
2000-09-01 00:00:00 campus NA 61.63
2000-09-01 01:00:00 campus 52 62.55
2000-09-01 02:00:00 campus 52 63.52
2000-09-01 00:00:00 city centre 66 56.69
2000-09-01 01:00:00 city centre NA 54.75
2000-09-01 02:00:00 city centre 56 54.65
Wierzyłem, że powinienem użyć pakietu „reshape2”, aby to zrobić. Najpierw próbowałem stopić, a następnie wyrzucić zestaw danych:
test.melt <- melt(test.data, id.vars = "date", measure.vars = c("site", "obs", "mod"))
Jednak zwróciło tylko połowę danych, tzn. Zapisy witryny („centrum miasta”) następujące po pierwszym („kampus”) zostały odcięte:
date variable value
2001-01-01 00:00:00 site campus
2001-01-01 01:00:00 site campus
2001-01-01 02:00:00 site campus
2001-01-01 00:00:00 obs NA
2001-01-01 01:00:00 obs 52
2001-01-01 02:00:00 obs 52
2001-01-01 00:00:00 mod 61.63
2001-01-01 01:00:00 mod 62.55
2001-01-01 02:00:00 mod 63.52
Potem spróbowałem przekształcić:
test.recast <- recast(test.data, date ~ site + obs + mod)
Zwrócił jednak komunikat o błędzie:
Error in eval(expr, envir, enclos) : object 'site' not found
Próbowałem szukać poprzednich pytań, ale nie znalazłem podobnych scenariuszy (popraw mnie, jeśli się mylę). Czy ktoś mógłby mi w tym pomóc?
Z góry bardzo dziękuję!