Wie gestalte ich einen Datenrahmen mit "wiederkehrenden" Spalten um?

Ich bin neu in der Datenanalyse mit R. Ich habe kürzlich einen vorformatierten Datensatz für ein Umweltbeobachtungsmodell erhalten, von dem ein Beispielsatz unten gezeigt wird:

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

Grundsätzlich umfassen die Daten die Zeitreihen der stündlich beobachteten und modellierten Konzentrationen eines Schadstoffs an verschiedenen Stellen in "wiederkehrenden Spalten", d. H. Stelle - obs - mod (in Beispiel I wurden nur 2 von insgesamt 75 Stellen gezeigt). Ich habe diesen "breiten" Datensatz als Datenrahmen eingelesen und wollte ihn in das "engere" Format umformen als:

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

Ich glaubte, dass ich das Paket "reshape2" verwenden sollte, um dies zu tun. Zuerst habe ich versucht, den Datensatz zu schmelzen und dann zu gießen:

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

Es wurde jedoch nur die Hälfte der Daten zurückgegeben, d. H. Die Aufzeichnungen der Standorte ("Stadtzentrum") nach dem ersten ("Campus") wurden alle abgeschnitten:

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

Ich habe dann versucht Neufassung:

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

Es gab jedoch mit Fehlermeldung zurück:

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

Ich habe versucht, nach vorherigen Fragen zu suchen, habe jedoch keine ähnlichen Szenarien gefunden (korrigieren Sie mich, wenn ich falsch liege). Könnte mir bitte jemand dabei helfen?

Vielen Dank im Voraus!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage