Versuchen
library(reshape2)
df
Date Time Object_Name Object_Value
1 7/28/2017 8:00 A1 58.56
2 7/28/2017 8:00 A2 51.66
3 7/28/2017 8:30 A1 60.20
4 7/28/2017 8:30 A2 65.20
dcast(df, Date + Time ~ Object_Name)
Date Time A1 A2
1 7/28/2017 8:00 58.56 51.66
2 7/28/2017 8:30 60.20 65.20
Alternativ
library(tidyr)
spread(df, Object_Name, Object_Value)
Date Time A1 A2
1 7/28/2017 8:00 58.56 51.66
2 7/28/2017 8:30 60.20 65.20
den Kommentar zu adressieren, die oben funktioniert gut, wenn Sie haben einzigartige Fälle. Betrachten Sie zum Beispiel die folgenden:
df
Date Time Object_Name Object_Value
1 7/28/2017 8:00 A1 58.56
2 7/28/2017 8:00 A1 50.00
3 7/28/2017 8:00 A2 51.66
4 7/28/2017 8:30 A1 60.20
5 7/28/2017 8:30 A2 65.20
Blick auf die ersten beiden Zeilen, und Sie können, dass für das gleiche Datum, Uhrzeit und Object_Name sehen, haben wir zwei Werte. Dies bedeutet, dass dcast
nicht weiß, was zu tun ist und gibt folgende Warnung: Aggregation function missing: defaulting to length
. Wir können das umgehen, indem wir die Aggregationsfunktion angeben. Zum Beispiel wollen wir den Mittelwert dieser Werte annehmen:
dcast(df, Date + Time ~ Object_Name, fun.aggregate = mean)
Date Time A1 A2
1 7/28/2017 8:00 54.28 51.66
2 7/28/2017 8:30 60.20 65.20
Ich bin Werte als 0 und 1 bekommen, sollte ich ausdrücklich für object_Value angeben? – Anagha
Warnung: Aggregationsfunktion fehlt: Standard auf Länge. und alle Werte sind 0 und 1 – Anagha
Könnte der Downvoter bitte den Downvote erklären? – coffeinjunky