Как изменить структуру данных с «повторяющимися» столбцами?
Я новичок в анализе данных с R. Недавно я получил предварительно отформатированный набор данных модели наблюдений за окружающей средой, пример подмножества которого показан ниже:
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
В основном, данные включают временные ряды почасовых наблюдаемых и смоделированных концентраций загрязнителя на различных участках в «повторяющихся столбцах», то есть site-obs-mod (в примере, который я показал только 2 из общего числа 75 сайтов). Я прочитал это "широко" набор данных в качестве фрейма данных, и хотел преобразовать его в «более узкий» отформатировать как:
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
Я считал, что должен использовать пакет «reshape2» сделать это. Сначала я попытался расплавить, а затем выполнил набор данных:
test.melt <- melt(test.data, id.vars = "date", measure.vars = c("site", "obs", "mod"))
Однако он вернул только половину данных, то есть записи сайта (ов) («центр города»), следующие за первым («кампус»), были обрезаны:
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
Затем я попытался переделать:
test.recast <- recast(test.data, date ~ site + obs + mod)
Тем не менее, он вернулся с сообщением об ошибке:
Error in eval(expr, envir, enclos) : object 'site' not found
Я пытался найти предыдущие вопросы, но не нашел похожих сценариев (поправьте меня, если я ошибаюсь). Может ли кто-нибудь помочь мне с этим?
Спасибо заранее!