Zusammenfassen von doppelten Werten
Zusammenfassen von doppelten Werten
Hallo ihr Lieben,
also es geht um folgendes:
Ich habe eine Tabelle mit 23 Spalten und 3 Zeilen. Darunter die Spalten "Zeitpunkt", "IP" und "Wert". Meine Aufgabe ist es jetzt, für jede IP die Werte passend zusammen zu fassen. Dabei soll darauf geachtet werden, dass bei gleichem Zeitpunkt nur der Mittelwert der jeweiligen Werte ausgegeben wird.
Also ich habe Bsp. die IP 21 zum Zeitpunkt 18 Uhr liegen zwei Werte vor. Nun von diesen 2 Punkten den Mittelwert des Wertes berechnen und dann wieder in die Tabelle einfügen.
Ich habe folgendes probiert:
if (duplicated(tabelle$zeitpunkt) = TRUE){tabelle$wert = with(merge(wert))};
Da komme ich nicht weiter, weil irgendwie muss ich ja die zwei Werte bekommen, so würde ich ja von allen werten den Mittelwert bekommen. Hat da jemand eine Idee wie ich das machen kann?
also es geht um folgendes:
Ich habe eine Tabelle mit 23 Spalten und 3 Zeilen. Darunter die Spalten "Zeitpunkt", "IP" und "Wert". Meine Aufgabe ist es jetzt, für jede IP die Werte passend zusammen zu fassen. Dabei soll darauf geachtet werden, dass bei gleichem Zeitpunkt nur der Mittelwert der jeweiligen Werte ausgegeben wird.
Also ich habe Bsp. die IP 21 zum Zeitpunkt 18 Uhr liegen zwei Werte vor. Nun von diesen 2 Punkten den Mittelwert des Wertes berechnen und dann wieder in die Tabelle einfügen.
Ich habe folgendes probiert:
if (duplicated(tabelle$zeitpunkt) = TRUE){tabelle$wert = with(merge(wert))};
Da komme ich nicht weiter, weil irgendwie muss ich ja die zwei Werte bekommen, so würde ich ja von allen werten den Mittelwert bekommen. Hat da jemand eine Idee wie ich das machen kann?
Re: Zusammenfassen von doppelten Werten
Für jede Zeit x IP kombination soll also der Mittelwert berechnet werden. Mit dplyr würde ich das so machen:
oder mit data.table
jogo kommt bestimmt gleich mit split() um die Ecke und die große Glocke mit aggregate()...
Code: Alles auswählen
tabelle %>%
group_by(zeitpunkt, ip) %>%
summarise(wert =mean(wert))
Code: Alles auswählen
tabelle[, list(wert = mean(wert)), list(zeitpunkt, ip)]
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Zusammenfassen von doppelten Werten
Es muss nicht immer split() sein und statt aggregate() kann man wahrscheinlich auch xtabs() einsetzen.
In Erinnerung an Athomas sollte auch noch ave() erwähnt werden. Für die eigentliche grundlegende Datenarbeit reicht auch tapply()
Gruß, Jörg
Re: Zusammenfassen von doppelten Werten
Also wenn ich schon so freundlich gebeten werde, dann verzichte ich natürlich nicht auf eine aggregate-Lösung. Ich sage ja immer, dass man den jungen Leuten erst R beibringen soll, bevor man sie mit dplyr oder data.table oder ähnlichem verwirrt. Deshalb:
@jogo: Ich habe gehört, besonders schnell geht es mit RCpp
LG,
Bernhard
Code: Alles auswählen
bsp <- read.table(header= TRUE, text=
"Zeit IP Wert
12 12 12
12 13 13
12 13 14
14 12 15")
aggregate(x = bsp, by = list(bsp$Zeit, bsp$IP), FUN="mean")
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Zusammenfassen von doppelten Werten
Hallo zusammen,
Deshalb wäre
Er benutzt allerdings die Abkürzung
Athomas ist inzwischen uneingeschränkt (d.h. auch für kleinere Tabellen) auf data.table.In Erinnerung an Athomas sollte auch noch ave() erwähnt werden.
Deshalb wäre
auch seine Empfehlung.tabelle[, list(wert = mean(wert)), list(zeitpunkt, ip)]
Er benutzt allerdings die Abkürzung
!tabelle[ , .(wert = mean(wert)), .(zeitpunkt, ip)]
Re: Zusammenfassen von doppelten Werten
Hallo Athomas,
willkommen zurück!
Zu data.table habe ich auch etwas gemacht (das ist der Werbeblock! )
willkommen zurück!
Zu data.table habe ich auch etwas gemacht (das ist der Werbeblock! )
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Zusammenfassen von doppelten Werten
Hallo Thomas,
schön, dass Du wieder hier reinschaust!
Gruß, Jörg
schön, dass Du wieder hier reinschaust!
Zumindest hat man dann für eine reichliche Anzahl von Aufgaben einen einheitlichen Aufbau der Parameter.
Gruß, Jörg
Re: Zusammenfassen von doppelten Werten
Juuhuuuuu! Hallo Athomas - schön, Dich wieder an Bord zu sehen!
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Zusammenfassen von doppelten Werten
vielen Dank für die Zahlreiche Helfer!
Ich habe das jetzt so gemacht:
aggregate(z$wert~z$zeitpunkt,data=z,mean)
Damit ging es relativ schnell und flexibel!
Ich habe das jetzt so gemacht:
aggregate(z$wert~z$zeitpunkt,data=z,mean)
Damit ging es relativ schnell und flexibel!