Mittelwert mehrerer Spalten bilden

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
Lis91
Beiträge: 12
Registriert: Sa Mai 18, 2019 1:18 pm

Mittelwert mehrerer Spalten bilden

Beitrag von Lis91 » Sa Mai 18, 2019 1:25 pm

Schönen guten Tag zusammen,
ich bin nicht nur neu hier, sondern auch, wenn es um den Umgang mit R geht.
Eigentlich recht banal, aber nach einiger Beschäftigung mit Google und dem Probieren von potentiellen Lösungen mit RStudio bin ich leider noch nicht auf den Lösungsweg gekommen.
Es geht darum, dass ich in einem riesigen Datensatz 3 Spalten habe ("Item1", "Item2" und "Item3") und möchte eine neue Spalte anlegen, in der der Mittelwert dieser drei Spalten steht, "M_Items13". Wenn mir jemand helfen könnte, wäre ich sehr dankbar. :)

Liebe Grüße
Lis

Hufeisen
Beiträge: 68
Registriert: Fr Aug 31, 2018 6:34 pm

Re: Mittelwert mehrerer Spalten bilden

Beitrag von Hufeisen » Sa Mai 18, 2019 2:08 pm

Hallo,

das ist schnell erledigt. Guck dir die Funktion apply() an. Sollte es nicht gleich auf Anhieb funktionieren, hast du vermutlich Fehler in den Daten oder R das Datenformat nicht richtig mitgeteilt. Das kann man sehr gut mit str() überprüfen.

Code: Alles auswählen

# Beispieldaten erzeugen
Beispieldaten <- data.frame(Item1 = c(1:10), Item2 = c(11:20), Item3 = c(21:30))
str(Beispieldaten)
'data.frame':	10 obs. of  3 variables:
 $ Item1: int  1 2 3 4 5 6 7 8 9 10
 $ Item2: int  11 12 13 14 15 16 17 18 19 20
 $ Item3: int  21 22 23 24 25 26 27 28 29 30
 
# Mittelwert berechnen
Beispieldaten$Mittel <- apply(Beispieldaten, 1, function(x) mean(x))

# Ausgabe
Beispieldaten
> Beispieldaten
   Item1 Item2 Item3 Mittel
1      1    11    21     11
2      2    12    22     12
3      3    13    23     13
4      4    14    24     14
5      5    15    25     15
6      6    16    26     16
7      7    17    27     17
8      8    18    28     18
9      9    19    29     19
10    10    20    30     20

Lis91
Beiträge: 12
Registriert: Sa Mai 18, 2019 1:18 pm

Re: Mittelwert mehrerer Spalten bilden

Beitrag von Lis91 » Sa Mai 18, 2019 8:13 pm

Hey! Danke schonmal für Deine ausführliche Antwort. Leider hat das so bei mir nicht funktioniert. Wenn ich den Befehl str(MeinDatensatz) eingebe, erhalte ich in der Ausgabe:
...
$ Variable1 : num 3 3 3 3 4 2 2 4 3 2 ...
$ Variable2 : num 2 2 4 3 3 3 1 3 3 2 ...
$ Variable3 : num 2 3 3 3 4 4 3 3 3 4 ...
...
Und nicht wie bei Dir "int...". Bedeutet das, dass meine Daten anders formatiert sind? Wenn ja, kannst Du mir sagen, wie ich das ändern/umgehen kann, dass ich Deinen nachfolgenden Befehl nutzen kann? Also diesen hier:
Beispieldaten$Mittel <- apply(Beispieldaten, 1, function(x) mean(x))

Dieser Befehl berechnet ja von allen vorhandenen Spalten zeilenweise den Mittelwert und schreibt ihn in eine neue Spalte. Bei mir habe ich aber viele andere Variablen, die hier unberücksichtigt bleiben sollen. Also müsste ich vermutlich noch spezifizieren, dass ich den Mittelwert nur von "Variable1", "Variable2" und "Variable3" berechnen möchte..? :?

Liebe Grüße und danke schonmal!

PS: In meinem Eröffnungsbeitrag habe ich von "Item1" usw. gesprochen. "Variable1" wäre hier wohl treffender.

jogo
Beiträge: 1309
Registriert: Fr Okt 07, 2016 8:25 am

Re: Mittelwert mehrerer Spalten bilden

Beitrag von jogo » So Mai 19, 2019 7:18 am

Hallo Lis,

willkommen im Forum!
Bitte beachte beim Schreiben die Formatierungen: viewtopic.php?f=20&t=29
Lis91 hat geschrieben:
Sa Mai 18, 2019 8:13 pm
Hey! Danke schonmal für Deine ausführliche Antwort. Leider hat das so bei mir nicht funktioniert. Wenn ich den Befehl str(MeinDatensatz) eingebe, erhalte ich in der Ausgabe:
...
$ Variable1 : num 3 3 3 3 4 2 2 4 3 2 ...
$ Variable2 : num 2 2 4 3 3 3 1 3 3 2 ...
$ Variable3 : num 2 3 3 3 4 4 3 3 3 4 ...
...
Und nicht wie bei Dir "int...". Bedeutet das, dass meine Daten anders formatiert sind? Wenn ja, kannst Du mir sagen, wie ich das ändern/umgehen kann, dass ich Deinen nachfolgenden Befehl nutzen kann?
Wichtig ist nur, dass es Daten sind, mit denen man rechnen kann - also nicht etwa character oder factor.
Also diesen hier:
Beispieldaten$Mittel <- apply(Beispieldaten, 1, function(x) mean(x))
Du könntest Folgendes machen:

Code: Alles auswählen

Beispieldaten$Mittel <- rowMeans(Beispieldaten[, c("Variable1", "Variable2", "Variable3")])
Dieser Befehl berechnet ja von allen vorhandenen Spalten zeilenweise den Mittelwert und schreibt ihn in eine neue Spalte. Bei mir habe ich aber viele andere Variablen, die hier unberücksichtigt bleiben sollen. Also müsste ich vermutlich noch spezifizieren, dass ich den Mittelwert nur von "Variable1", "Variable2" und "Variable3" berechnen möchte..? :?
genau so wird es gemacht.

Code: Alles auswählen

... <- apply(Beispieldaten[, c("Variable1", "Variable2", "Variable3")], 1, mean)
geht natürlich auch. ;)

Gruß, Jörg

Lis91
Beiträge: 12
Registriert: Sa Mai 18, 2019 1:18 pm

Re: Mittelwert mehrerer Spalten bilden

Beitrag von Lis91 » So Mai 19, 2019 5:59 pm

jogo hat geschrieben:
So Mai 19, 2019 7:18 am
Hallo Lis,

willkommen im Forum!
Bitte beachte beim Schreiben die Formatierungen: viewtopic.php?f=20&t=29
Hallo Jörg, und danke für den Hinweis! Das hatte ich ganz übersehen :roll:
Lis91 hat geschrieben:
Sa Mai 18, 2019 8:13 pm
Du könntest folgendes machen:

Code: Alles auswählen

Beispieldaten$Mittel <- rowMeans(Beispieldaten[, c("Variable1", "Variable2", "Variable3")])
Dieser Befehl berechnet ja von allen vorhandenen Spalten zeilenweise den Mittelwert und schreibt ihn in eine neue Spalte. Bei mir habe ich aber viele andere Variablen, die hier unberücksichtigt bleiben sollen. Also müsste ich vermutlich noch spezifizieren, dass ich den Mittelwert nur von "Variable1", "Variable2" und "Variable3" berechnen möchte..? :?
genau so wird es gemacht.

Code: Alles auswählen

... <- apply(Beispieldaten[, c("Variable1", "Variable2", "Variable3")], 1, mean)
geht natürlich auch. ;)

Gruß, Jörg
Vielen lieben Dank, mit dem rowMeans-Befehl hat es einwandfrei geklappt (yippi)! Auch Dir vielen Dank für Deine Hilfe, Hufeisen!

Liebe Grüße
Lis

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast