Como reformular um dataframe com colunas "recorrentes"?

Eu sou novo na análise de dados com R. Recentemente recebi um conjunto de dados de modelo de observação ambiental pré-formatado, um subconjunto de exemplo é mostrado abaixo:

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

Basicamente, os dados incluem a série temporal de concentrações observadas e modeladas por hora de um poluente em vários locais em "colunas recorrentes", isto é, obs. Do site (no exemplo, mostrei apenas 2 de um total de 75 locais). Eu li esse conjunto de dados "amplo" como um quadro de dados e quis reformulá-lo no formato "mais estreito" como:

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

Eu acreditava que deveria usar o pacote "reshape2" para fazer isso. Primeiramente eu tentei derreter e depois dcast o dataset:

test.melt <- melt(test.data, id.vars = "date", measure.vars = c("site", "obs", "mod"))

No entanto, apenas retornou metade dos dados, ou seja, os registros do (s) site (s) ("centro da cidade") após o primeiro ("campus") foram todos cortados:

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

Então tentei reformular:

test.recast <- recast(test.data, date ~ site + obs + mod)

No entanto, retornou com mensagem de erro:

Error in eval(expr, envir, enclos) : object 'site' not found

Eu tentei procurar por questões anteriores, mas não encontrei cenários semelhantes (corrija-me se eu estiver errado). Alguém por favor poderia me ajudar com isso?

Muito obrigado antecipadamente!

questionAnswers(2)

yourAnswerToTheQuestion