Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
Flötenspieler
Beiträge: 5
Registriert: So Sep 13, 2020 7:54 pm

Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von Flötenspieler »

Hallihallo,

ich bin Student, leider noch ein Anfänger, arbeite gerade an meiner Abschlussarbeit und habe ein kleines Problem:

Ich habe in R eine Exceldatei importiert (Die Datei heißt ESG monatlich), welche 506 Spalten mit jeweils 216 Zeilen besitzt.

Code: Alles auswählen

ESG <- read_excel("C:/Users/peter/Desktop/S&P500/ESG monatlich.xlsx")
ESG$me <- NULL
Die erste Spalte zeigt das Datum an während die restlichen 505 eine Zahl zwischen 0 und 100 ausgeben oder ein NA (wenn das Feld leer ist).
Die Datumszeile habe ich erst einmal übersichtshalber gelöscht.
Meine Frage: Wie kann ich den Mittelwert aller Zahlen der 505 Spalten zusammen berechnen? (Sprich Mittelwert aller Zahlen der 216 x 505 Tabelle, damit ich am Ende exakt einen Wert herausbekomme.)

Mein Problem ist hier, wenn ich bspw.:

Code: Alles auswählen

mean(ESG, na.rm = TRUE)
in R eingebe, wird mir
Warning message:
In mean.default(ESG, na.rm = TRUE) :
Argument ist weder numerisch noch boolesch: gebe NA zurück
angezeigt.

Ich kann leider nur die Mittelwerte von einzelnen Spalten berechnen.

Code: Alles auswählen

colMeans(ESG[1:10], na.rm = TRUE)
Dann bekomme eben jeweils die Mittelwerte von Spalte 1 bis 10.

Wäre über jede Hilfe überaus dankbar!

LG
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von bigben »

Probier mal die Funktion rowMeans() 😃
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Flötenspieler
Beiträge: 5
Registriert: So Sep 13, 2020 7:54 pm

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von Flötenspieler »

bigben hat geschrieben: So Sep 13, 2020 8:43 pm Probier mal die Funktion rowMeans() 😃
Hallo bigben,

ich meinte aber den Mittelwert von allen Zahlen zusammen. Sprich: Es soll genau eine Zahl rauskommen, die den Mittelwert ausgibt. Nicht den Mittelwert von jeder einzelnen Spalte.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von bigben »

Sorry, hätte ich besser lesen sollen. Quick&dirty:

Code: Alles auswählen

bsp <-  data.frame(a = 1:3, b = 1:3, c = 1:3)

mean(unlist(bsp), na.rm = TRUE)
wegen

Code: Alles auswählen

> bsp
  a b c
1 1 1 1
2 2 2 2
3 3 3 3
> unlist(bsp)
a1 a2 a3 b1 b2 b3 c1 c2 c3 
 1  2  3  1  2  3  1  2  3 
> 
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Flötenspieler
Beiträge: 5
Registriert: So Sep 13, 2020 7:54 pm

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von Flötenspieler »

bigben hat geschrieben: So Sep 13, 2020 9:14 pm Sorry, hätte ich besser lesen sollen. Quick&dirty:

Code: Alles auswählen

bsp <-  data.frame(a = 1:3, b = 1:3, c = 1:3)

mean(unlist(bsp), na.rm = TRUE)
wegen

Code: Alles auswählen

> bsp
  a b c
1 1 1 1
2 2 2 2
3 3 3 3
> unlist(bsp)
a1 a2 a3 b1 b2 b3 c1 c2 c3 
 1  2  3  1  2  3  1  2  3 
> 
LG,
Bernhard
DANKE, ES HAT GEKLAPPT!

LG
Flötenspieler
Beiträge: 5
Registriert: So Sep 13, 2020 7:54 pm

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von Flötenspieler »

Hallo bigben,

sorry, wenn das jetzt ne blöde Frage ist, aber kannst du nochmal genau erklären, warum das ohne "unlist" nicht ging?
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von bigben »

Ja, da musst Du jetzt aber mit einer recht technischen Antwort leben. R ist eine Computersprache, die strikt ihren Regeln folgt und nicht wie menschliche Sprachen aus dem Kontext heraus auch verstanden wird, selbst wenn Regeln und Wortschatz nicht streng eingehalten werden.

Im Idealfall kannst Du zu allen Kommandos von R die Regeln erfahren, wenn Du die eingebaute Hilfefunktion aufrufst, in diesem Fall

Code: Alles auswählen

help(mean)
Die dann erscheinende Hilfeseite ist streng formalisiert, d. h. man muss sich am anfang daran gewöhnen, mit der Zeit findet man Informationen aber sehr schnell. Unter der Überschrift Usage werden die möglichen Argumente benannt, in diesem Fall

Code: Alles auswählen

mean(x, ...)

## Default S3 method:
mean(x, trim = 0, na.rm = FALSE, ...)
Man ruft mean also immer mit einem Argument x auf und weiter unten unter der Überschrift Arguments kann man sehen, wofür x steht:

Code: Alles auswählen

x	
An R object. Currently there are methods for numeric/logical vectors and date, date-time and time interval objects.
Die Funktion verarbeitet also Vektoren von Zahlen, logischen Werte und Datumsangaben. Aber eben nur Vektoren. Dein ESG ist aber kein Vektor, sondern ein data.frame:

Code: Alles auswählen

> is.vector(bsp)
[1] FALSE
> is.data.frame(bsp)
[1] TRUE
Ein data.frame ist immer eine LIste von Vektoren, selbst aber nie ein Vektor:

Code: Alles auswählen

> is.data.frame(bsp)
[1] TRUE
> is.list(bsp)
[1] TRUE
Und weil Du die Funktion read_excel genommen hast ist es leider noch komplizierter. Dein ESG ist ein tibble das ein data.frame ist das eine list ist.
sorry, wenn das jetzt ne blöde Frage ist,
Sorry, das ist kompliziert, aber mit diesen Datentypen muss man sich beschäftigen, wenn man in R nicht ständig raten sondern verstehen will, was funktioniert und was nicht. Ist also keine blöde Frage aber doch ein Hinweis, dass Du Dich mit gewissen Grundlagen beschäftigen musst. Sonst ist Frustration vorprogrammiert.

Vektoren: https://cran.r-project.org/doc/manuals/ ... nd-vectors
Listen und data.frames: https://cran.r-project.org/doc/manuals/ ... ata-frames
Tibble: https://tibble.tidyverse.org/

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von jogo »

Hallo Flötenspieler,
Flötenspieler hat geschrieben: So Sep 13, 2020 8:16 pm

Code: Alles auswählen

ESG <- read_excel("C:/Users/peter/Desktop/S&P500/ESG monatlich.xlsx")
ESG$me <- NULL
Die erste Spalte zeigt das Datum an während die restlichen 505 eine Zahl zwischen 0 und 100 ausgeben oder ein NA (wenn das Feld leer ist).
Die Datumszeile habe ich erst einmal übersichtshalber gelöscht.
Du musst die erste Spalte aber nicht unbedingt löschen - Du darfst sie nur nicht einbeziehen bei der Mittelwertberechnung:

Code: Alles auswählen

ESG <- read_excel("C:/Users/peter/Desktop/S&P500/ESG monatlich.xlsx")
mean(unlist(ESG[-1]), na.rm=TRUE)
Gruß, Jörg
Flötenspieler
Beiträge: 5
Registriert: So Sep 13, 2020 7:54 pm

Re: Mittelwert von Zahlen aus 505 Spalten zusammen berechnen

Beitrag von Flötenspieler »

Vielen Dank euch beiden! :)
Antworten