Zeilen in Dataframe mit gleichem Attribut zusammenführen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Laila
Beiträge: 1
Registriert: Fr Sep 20, 2019 8:03 pm

Zeilen in Dataframe mit gleichem Attribut zusammenführen

Beitrag von Laila »

Hi,

ich würde gerne aus einem Dataframe Zeilen mit einem gleichen Attribut zusammenführen. In dem folgenden Beispiel sollte in der Tabelle also nur noch ein Eintrag mit "apple" stehen, hinter dem dann die Summe der "cost"s für alls "apple"s summiert steht - das gleiche für "pear" etc. Ich möchte das aber nicht für jedes Attribut einzeln definieren. Gibt es eine Möglichkeit, das zu automatisieren (also dass R eine ganze Spalte des Dataframe nach gleichartigen Zellen durchsucht und die betreffenden Zeilen zusammenführt)?

Beispiel:

fruit <- c("apple", "pear", "orange", "apple", "strawberry", "apple", "apple", "grape", "pear")
cost <- c(1,3,5,2,4,6,3,7,8)

example <- data.frame(cbind(fruit, cost))
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Zeilen in Dataframe mit gleichem Attribut zusammenführen

Beitrag von EDi »

Code: Alles auswählen

fruit <- c("apple", "pear", "orange", "apple", "strawberry", "apple", "apple", "grape", "pear")
cost <- c(1,3,5,2,4,6,3,7,8)

example <- data.frame(fruit, cost)

aggregate(cost ~ fruit, data = example, sum)
Ansonsten hab ich hier eine Übersicht über die verschiedenen Möglichkeiten gemacht: [url]https://stackoverflow.com/questions/25314336/extract-the-maximum-value-within-each-group-in-a-dataframe/25314565#25314565[/url]
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.
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zeilen in Dataframe mit gleichem Attribut zusammenführen

Beitrag von bigben »

Code: Alles auswählen

example <- data.frame(
  fruit = c("apple", "pear", "orange", "apple", "strawberry", "apple",
            "apple", "grape", "pear"),
   cost = c(1,3,5,2,4,6,3,7,8)
)

tapply(example$cost, example$fruit, sum)

aggregate(example$cost, list(example$fruit), sum)

by(example$cost, list(example$fruit), sum)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten