Zwei Reihen im Datensatz zu einer umwandeln

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

Moderatoren: EDi, jogo

Antworten
jms
Beiträge: 6
Registriert: Do Aug 08, 2019 7:02 pm

Zwei Reihen im Datensatz zu einer umwandeln

Beitrag von jms »

Hallo zusammen,

ich hoffe, jemand von Euch kann mir mit diesem Problem weiterhelfen: Ich möchte zwei Reihen in einem Datensatz zu einer machen, --> Die neue Reihe soll die Mittelwerte der alten beiden Reihen enthalten (letztere sollen dann auch nicht mehr im Datensatz auftauchen.)

Eine Idee wäre, über mutate() eine neue Reihe einzüfügen, die alten dann zu löschen. Aber erstens habe ich noch nicht herausgefunden, wie ich über mutate() die Mittelwerte von zwei Reihen erstellen kann, zweitens gibt es vielleicht eine bessere Möglichkeit?

Bsp:
Die Reihen, die die Zahl 1 in der Variable/Spalte ID erhalten, sollen zu einer neuen Reihe werden, die die Mittelwerte aus den "alten" enthält. Aus Data soll Data2 werden.. :)

Code: Alles auswählen

Data <- data.frame(
  ID = c(1, 1, 2, 3),
  B = c(2, 4, 6, 8),
  C = c(10, 12, 14, 16)
)

Data2 <- data.frame(
  ID = c(1, 2, 3),
  B = c(3, 6, 8),
  C = c(11, 14, 16)
)
Falls Ihr weitere Erläuterungen bräuchtet, sagt mir (Anfängerin) bitte gern Bescheid. Schon einmal vielen Dank!
Liebe Grüße, Lara
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zwei Reihen im Datensatz zu einer umwandeln

Beitrag von bigben »

Hallo Lara,

Um Mittelwerte von Reihen in Dataframes zu erhalten gibt es die sehr nützliche Funktion rowMeans.

Um beispielsweise die reihenweisen Mittelwerte der Spalten B und C in DAta zu erhalten:

Code: Alles auswählen

rowMeans(Data[,c("B", "C")])
Dein Beispiel habe ich hingegen nicht verstanden. Welche Operation überführt Data in Data2?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zwei Reihen im Datensatz zu einer umwandeln

Beitrag von bigben »

Sorry,

ich hab'S jetzt kapiert: Du willst aggregieren:

Code: Alles auswählen

Data2 <- aggregate(Data, by = list(Data$ID), mean)
Alternativ auch:

Code: Alles auswählen

> aggregate(cbind(B, C) ~ ID, data=Data, mean)
  ID B  C
1  1 3 11
2  2 6 14
3  3 8 16
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jms
Beiträge: 6
Registriert: Do Aug 08, 2019 7:02 pm

Re: Zwei Reihen im Datensatz zu einer umwandeln

Beitrag von jms »

Hallo Bernhard,

wow, das ging schnell - vielen Dank, dass Du Dir die Zeit genommen hast!
Ich probiere das gleich aus und frag noch einmal, falls es nicht funktionieren sollte..

Vielen Dank!
Liebe Grüße und einen schönen Tag Dir, Lara
Antworten