Gruppierung/Addieren von Zeilen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
srstud

Gruppierung/Addieren von Zeilen

Beitrag von srstud »

Hallo zusammen,

ich habe einen Datensatz wie folgt:

1000 | 5000€
1001 | 1000€
1001 | 1100€
...

ich würde gerne die Werte in Spalte 2 gruppieren/addieren und als Kriterium Spalte 1 benutzen. Sodass meine Ausgabetabelle dann
1000 5000€
1001 2100€
wäre.

Leider komme ich mit Group_by nicht weiter, da das mMn auch die falsche Funktion ist.

Danke vorab.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Gruppierung/Addieren von Zeilen

Beitrag von jogo »

Hallo srstud,

willkommen im Forum!

Code: Alles auswählen

tapply(Datensatz$Spalte2, Datensatz$Spalte1, FUN=sum)
oder mit aggregate()

Code: Alles auswählen

aggregate(Spalte2 ~ Spalte1, data=Datensatz, FUN=sum)
Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Gruppierung/Addieren von Zeilen

Beitrag von EDi »

Oder im tidyverse

Code: Alles auswählen

df %>%
  group_by(Spalte 1) %>%
  summarise(sumsumsumherum = sum(Spalte2))  
Oder mit data.table

Code: Alles auswählen

dt[, sum(Spalte2), by = Spalte1] 
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
Bild.
srstud

Re: Gruppierung/Addieren von Zeilen

Beitrag von srstud »

Vielen Dank euch beiden! Es hat funktioniert:)
srstud

Re: Gruppierung/Addieren von Zeilen

Beitrag von srstud »

srstud hat geschrieben: Di Aug 28, 2018 2:30 pm Hallo zusammen,

ich habe einen Datensatz wie folgt:

1000 | 5000€
1001 | 1000€
1001 | 1100€
...

ich würde gerne die Werte in Spalte 2 gruppieren/addieren und als Kriterium Spalte 1 benutzen. Sodass meine Ausgabetabelle dann
1000 5000€
1001 2100€
wäre.

Leider komme ich mit Group_by nicht weiter, da das mMn auch die falsche Funktion ist.

Danke vorab.
Ich habe nochmals eine Frage dazu.

Angenommen ich habe die Tabelle wie oben nur mit der Erweiterung um eine dritte Spalte, die mit der Spalte A (Kundennr.) zusammenhängt (eindeutig ist):
Kundenbewegungen
1000 | 5000€ | Kunde A
1001 | 1000€ | Kunde B
1001 | 1100€ | Kunde B
...

Wenn ich jetzt NeueÜbersicht = aggregate(Kundenbewegungen$Spalte2 ~ Kundenbewegungen$Spalte1, data=Kundenbewegungen, FUN=sum) anwende, wird in der neuen Tabelle, die 3. Spalte nicht mehr angezeigt. Wie kann ich diese aber weiterhin behalten?

Danke!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Gruppierung/Addieren von Zeilen

Beitrag von jogo »

Code: Alles auswählen

NeueÜbersicht <- aggregate(Spalte2 ~ Spalte1 + Spalte3, FUN=sum, data=Kundenbewegungen)
oder als reproduzierbares Beispiel (siehe viewtopic.php?f=20&t=11 ):

Code: Alles auswählen

Kundenbewegungen <- read.table(header=TRUE, stringsAsFactors = FALSE, sep="|", strip.white = TRUE, text=
"KundenId | Spalte2 | Kunde
1000 | 5000 | KundeA
1001 | 1000 | KundeB
1001 | 1100 | KundeB")
aggregate(Spalte2 ~ KundenId + Kunde, FUN=sum, data=Kundenbewegungen)
und weil ich data.table mag:

Code: Alles auswählen

library("data.table")
setDT(Kundenbewegungen)[, sum(Spalte2), .(KundenId, Kunde)]
Gruß, Jörg
Antworten