Как изменить структуру данных с «повторяющимися» столбцами?

Я новичок в анализе данных с 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

Я пытался найти предыдущие вопросы, но не нашел похожих сценариев (поправьте меня, если я ошибаюсь). Может ли кто-нибудь помочь мне с этим?

Спасибо заранее!

Ответы на вопрос(2)

Ваш ответ на вопрос