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!