¿Cómo remodelar un marco de datos con columnas "recurrentes"?
Soy nuevo en el análisis de datos con R. Hace poco recibí un conjunto de datos de modelo de observación ambiental preformateado, un subconjunto de ejemplo que se muestra a continuación:
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
Básicamente, los datos incluyen las series de tiempo de concentraciones observadas y modeladas por hora de un contaminante en varios sitios en "columnas recurrentes", es decir, sitio - obs - mod (en el ejemplo, solo mostré 2 de un total de 75 sitios). Leí este conjunto de datos "ancho" como un marco de datos y quise remodelarlo en el formato "más estrecho" 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
Creí que debería usar el paquete "reshape2" para hacer esto. Primero intenté fundir y luego difundir el conjunto de datos:
test.melt <- melt(test.data, id.vars = "date", measure.vars = c("site", "obs", "mod"))
Sin embargo, solo se devolvió la mitad de los datos, es decir, los registros del sitio (s) ("centro de la ciudad") después del primero ("campus") se cortaron:
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
Entonces traté de refundir:
test.recast <- recast(test.data, date ~ site + obs + mod)
Sin embargo, volvió con mensaje de error:
Error in eval(expr, envir, enclos) : object 'site' not found
He intentado buscar preguntas anteriores pero no he encontrado escenarios similares (corríjame si me equivoco). ¿Podría alguien ayudarme con esto, por favor?
¡Muchas gracias de antemano!