Seite 2 von 3

Re: Erstellen neuer Variablen in R

Verfasst: Sa Mai 16, 2020 11:41 pm
von Gottchen
Super, danke jetzt funktioniert es! Wie kann ich diesen Datensatz der 88 Personen zu den jeweiligen 3 Variablen in eine Variable packen? Sodass ich eine Variable habe, die für jede einzelne Person den Mittelwert aus den 3 Variablen (StrongMixed, NotTorn, Indecisive) enthält?

Außerdem will ich jetzt mit dem Alter der Probanden weiterarbeiten. Wie bringe ich "Age" in die Values, sodass ich davon Mean, Median und Mode berechnen lassen kann, um die zentrale Tendenz zu erfassen.

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 2:50 am
von bigben
Und ich dachte, meine Antwort oben hätte das alles schon abgedeckt. Sowohl das Einlesen als auch den Mittelwert der drei Spalten und Age in rechenfähiger Struktur.
LG,
Bernhard

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 10:13 am
von Gottchen
Ach, entschuldige mich! Habe deine Nachricht gesehen und auch eingeschrieben, aber irgendwie habe ich als Anfänger das Diagramm an der Seite übersehen und dachte mir nur schade. :D

Wärst Du so nett und könntest mir noch die Fragen dazu beantworten?
1. Du benutzt nach Einlesen des Datensatzes den Befehl "str(hend)". Wofür steht und wozu dient str?
2. Dann benutzt Du hend$Mittelwert <- rowMeans(data.csv[,c("StrongMixed", "NotTorn", "Indecisive")]). Könntest Du mir zum Verständnis die einzelnen Komponenten dieses Befehls erklären? Will es ja auch selber können. :) Zum Beispiel wann setzt man das $-Symbol ein? Wofür steht rowMeans und wofür das c?
3. Ich habe ja jetzt das Diagramm table(hend$Mittelwert). Kann ich die einzelnen Daten/Werte des Diagramms auch irgendwo in Form von Text bzw. Ziffern lesen? Dazu: Wofür stehen diese Mittelwerte genau? Das was jogo geschrieben hatte, handelte sich ja um die Mittelwerte jeder Person zu jeder Variable (StrongMixed, NotTorn, Indecisive)

Danke auf jeden Fall für deine tolle Hilfe! :geek:

PS: Und wie ich das hier mache, ist mir auch immer noch unklar: Wie kann ich diesen Datensatz der 88 Personen zu den jeweiligen 3 Variablen in eine Variable packen? Sodass ich eine Variable habe, die für jede einzelne Person den Mittelwert aus den 3 Variablen (StrongMixed, NotTorn, Indecisive) enthält?

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 11:06 am
von jogo
Gottchen hat geschrieben: So Mai 17, 2020 10:13 am Wärst Du so nett und könntest mir noch die Fragen dazu beantworten?
1. Du benutzt nach Einlesen des Datensatzes den Befehl "str(hend)". Wofür steht und wozu dient str?
str() zeigt die Struktur eines Objektes. So kann man kontrollieren, wie das Ergebnis nach dem Einlesen aussieht.
Hilfetext:

Code: Alles auswählen

help(str) ## oder
?str
2. Dann benutzt Du hend$Mittelwert <- rowMeans(data.csv[,c("StrongMixed", "NotTorn", "Indecisive")]). Könntest Du mir zum Verständnis die einzelnen Komponenten dieses Befehls erklären? Will es ja auch selber können. :) Zum Beispiel wann setzt man das $-Symbol ein?
Mit $ kommt man an ein Element einer Liste ran (eigentlich ist ein Dataframe eine Liste von Vektoren, die Vektoren (Spalten des Dataframes) sind alle gleich lang) Hilfetext (auch mit anderen Zugriffsoperationen):

Code: Alles auswählen

help('$')
Wofür steht rowMeans und wofür das c?
um Elemente zusammenzufügen, Hilfetext: Beispiele:

Code: Alles auswählen

example(c)
... und wegen des Mittelwertes von Age

Code: Alles auswählen

hend <- read.csv2("http://forum.r-statistik.de/download/file.php?id=978")
str(hend)
hend$Mittelwert <- rowMeans(hend[,c("StrongMixed", "NotTorn", "Indecisive")])
plot(table(hend$Mittelwert))

mean(hend$Age)
soweit erstmal.

Kennst Du dies schon?
https://cran.r-project.org/doc/manuals/ ... -intro.pdf

Gruß, Jörg

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 4:45 pm
von bigben
Hallo Gottchen,

Jörg hat meinen Code ja eigentlich sehr gut erklärt, ich kann mir aber vorstellen, dass Dir das wenig hilft, wenn Du ganz ohne R-Vorkenntnisse zu dieser Erklärung kommst. Zu Beschreiben, welche Datentypen es in R gibt (von denen man mit str prüft, ob sie beim Lesen mit read.csv2 richtig erkannt wurden), was ein Vektor und was ein Data.Frame ist und wie man auf die Spalten zugreift und zuletzt, wie man sich das alles an Text anschaut, das sprengt dann doch den Rahmen eines Forumsposts. Arbeite das ein oder andere gute Tutorial durch (das von Jörg verlinkte ist längst nicht das einzige gute im Netz) und wenn Du dann im Detail Fragen hast, darfst Du die hier gern stellen.
Gottchen hat geschrieben: So Mai 17, 2020 10:13 amWofür steht rowMeans und wofür das c?
rowMeans berechnet von jeder Zeile (row) in einem Dataframe den Mittelwert (Mean). Um also aus jeder Zeile den Mittelwert aus nur drei Spalten zu berechnen, habe ich mittels eckiger Klammern und c einen neuen Datensatz mit nur drei Spalten gebildet und darauf rowMeans angewendet.

3. Ich habe ja jetzt das Diagramm table(hend$Mittelwert). Kann ich die einzelnen Daten/Werte des Diagramms auch irgendwo in Form von Text bzw. Ziffern lesen?
Die Mittelwerte der drei Spalten pro Reihe kannst Du Dir mit

Code: Alles auswählen

print(hend$Mittelwert)
anzeigen lassen, die Häufigkeitstabelle mit

Code: Alles auswählen

print(table(hend$Mittelwert))
Wie kann ich diesen Datensatz der 88 Personen zu den jeweiligen 3 Variablen in eine Variable packen? Sodass ich eine Variable habe, die für jede einzelne Person den Mittelwert aus den 3 Variablen (StrongMixed, NotTorn, Indecisive) enthält?
Diese Information steckt jetzt schon in einer neuen Spalte im data.frame "hend" als "hend$Mittelwert". Wenn Du gerne eine von dem Mittelwert getrennte Variable, nennen wir sie Klaus, haben willst, kannst Du die durch Zuweisung erzeugen:

Code: Alles auswählen

Klaus <- hend$Mittelwert
Meistens ist es aber sinnvoller, die Daten im dataframe stehen zu lassen.

HTH,
Bernhard

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 9:07 pm
von Gottchen
Hey bigben, erstmal danke für deinen Aufwand! Bei deinem Code bekomme ich ja pro Person einen Wert. Bei dem Code von jogo bekomme ich ja drei Mittelwerte pro Person (halt einen für StrongMixed, einen für NotTorn und einen für Indecisive). Was genau ist denn dann dein Wert pro Person? Der Mittelwert pro Person für alle drei (StrongMixed, NotTorn, Indecisive) zusammen?

Code: Alles auswählen

 [1] -1.0000000  3.0000000 -0.6666667 -1.0000000  1.6666667  1.6666667  1.6666667 -0.6666667  1.6666667 -0.3333333
[11]  1.3333333 -0.6666667 -1.0000000 -0.6666667  0.0000000 -1.3333333  2.3333333 -2.0000000  2.0000000  1.3333333
[21]  1.3333333 -0.3333333  1.6666667  0.6666667 -0.3333333  0.0000000 -1.3333333 -1.3333333 -0.3333333  1.0000000
[31] -1.0000000  1.3333333  1.6666667         NA  2.0000000 -0.6666667 -3.0000000 -0.3333333 -0.6666667 -1.0000000
[41] -1.3333333 -1.6666667 -2.0000000 -1.6666667 -1.0000000         NA -1.0000000 -3.0000000 -1.3333333  0.3333333
[51]  1.6666667  1.6666667  1.6666667  0.0000000 -3.0000000  0.3333333  1.3333333  1.3333333 -0.6666667  0.0000000
[61]  1.0000000  1.6666667  0.3333333 -1.3333333 -0.6666667 -0.6666667  0.0000000  1.3333333 -1.0000000  1.3333333
[71] -2.3333333 -0.6666667 -0.6666667  0.6666667 -2.3333333  1.6666667  0.3333333  0.0000000  0.6666667  0.3333333
[81] -2.3333333 -1.0000000 -0.6666667 -1.0000000 -2.3333333 -2.0000000 -1.3333333  3.0000000
> 
Und danke, jetzt weiß ich zumindest wie ich eine Variable z.B. "NeueVariable" einer anderen zufüge. Ist ja keine Herausforderung. :D Am Beispiel von jogo:

Code: Alles auswählen

StrongMixed <- "3 3 1 -2 2 1 2 -1 2 -3 2 -1 -1 0 0 0 2 -2 2 0 1 -2 1 1 3 0 0 2 -1 1 -1 0 1 1 3 -1 -3 -3 -1 3 0 -1 -2 -1 -1 1 -1 -3 -1 3 1 2 2 1 -3 3 0 2 0 2 2 3 1 0 1 0 -1 2 2 1 -2 -1 -1 1 -2 2 3 0 1 0 -2 3 1 2 -2 -2 2 3"
NotTorn <- "-3 3 -2 2 2 3 2 -2 2 3 1 -1 -1 -1 0 -2 2 -2 2 2 2 1 3 -1 -1 -2 -2 -3 0 1 -1 2 3 1 1 -2 -3 3 -1 -3 -2 -2 -2 -2 -1 1 -1 -3 -1 0 3 2 2 -1 -3 0 2 1 -1 -1 -2 1 1 -2 -2 -1 1 1 -2 2 -3 -1 -1 2 -3 2 0 -1 2 0 -3 -3 -2 -2 -3 -2 -3 3"
Indecisive <- "-3 3 -1 -3 1 1 1 1 1 -1 1 0 -1 -1 0 -2 3 -2 2 2 1 0 1 2 -3 2 -2 -3 0 1 -1 2 1 NA 2 1 -3 -1 0 -3 -2 -2 -2 -2 -1 NA -1 -3 -2 -2 1 1 1 0 -3 -2 2 1 -1 -1 3 1 -1 -2 -1 -1 0 1 -3 1 -2 0 0 -1 -2 1 -2 1 -1 1 -2 -3 -1 -3 -2 -2 -3 3"
mscstart <- data.frame(
StrongMixed=as.numeric(strsplit(StrongMixed, " ")[[1]]),
NotTorn=as.numeric(strsplit(NotTorn, " ")[[1]]),
Indecisive=as.numeric(strsplit(Indecisive, " ")[[1]]))
mscstart$new <- rowMeans(mscstart, na.rm=TRUE)
mscstart
NeueVariable <- mscstart
Also in diesem Falle könnte ich natürlich von Beginn an mscstart mit NeueVariable ersetzen.

Re: Erstellen neuer Variablen in R

Verfasst: So Mai 17, 2020 11:19 pm
von bigben
Gottchen hat geschrieben: So Mai 17, 2020 9:07 pmBei deinem Code bekomme ich ja pro Person einen Wert. Bei dem Code von jogo bekomme ich ja drei Mittelwerte pro Person (halt einen für StrongMixed, einen für NotTorn und einen für Indecisive).
Definiere "Person". Ich gehe davon aus, jede Zeile ist eine Person. Pro Zeile gibt es einen Wert für StrongMixed. Wie kann man aus einem Wert einen Mittelwert bilden? Statt also zu hinterfragen, was jogos und meinen Code unterscheidet solltest Du definieren, was Du haben willst.
Was genau ist denn dann dein Wert pro Person?
Der Mittelwert pro Person für alle drei (StrongMixed, NotTorn, Indecisive) zusammen?
Ja, das erschien mir eine angemessene Interpretation von
Wie kann ich eine neue einzelne Variable erstellen, die für jede einzelne Person einer Umfrage/Studie den Mittelwert aus 3 bestimmten Variablen (StrongMixed, NotTorn, Indecisive) enthält?
-


.

Code: Alles auswählen

NeueVariable <- mscstart
Also in diesem Falle könnte ich natürlich von Beginn an mscstart mit NeueVariable ersetzen.
Ja. Aber Vorsicht: Der Begriff Variable hat hier zwei Bedeutungen. Mit Blick auf die Syntax einer Computersprache sind mscstart und NeueVariable zwei Variablen mit gleichem Inhalt. In der Statistik würde ich nicht sagen, dass eins von beidem eine Variable wäre. Da würde ich sagen, dass beides Tabellen sind, die je 34 Variablen enthalten.

HTH,
Bernhard

Re: Erstellen neuer Variablen in R

Verfasst: Mo Mai 18, 2020 12:12 am
von Gottchen
Hey bigben, tut mir wahnsinnig leid für diese ganzen Verwirrungen meinerseits. Erst jetzt, wo ich das alles nochmal durchgegangen bin, erkenne ich auch die Funktionsweise eurer beiden Codes und dass natürlich beide auf dieselben Ergebnisse kommen. Ich war irgendwie total verwirrt. Und selbstverständlich ist es sinnlos aus einem Wert einen Mittelwert zu erschließen, sondern wird pro Person (Zeile) ein Mittelwert aus allen 3 Werten berechnet. Mit meiner Laienhaftigkeit habe ich komplett darüber hinweg gesehen... Ich bedanke mich bei euch allen, dass ich es bis hierhin geschafft habe. Jetzt ist endlich alles einleuchtend.

Wie kann man denn in R Unterschiede zwischen zwei Variablen (wäre das Wort jetzt hier richtig angebracht?) z.B. Mann/Frau untersuchen? Zum Beispiel, ob sich in meinem Datensatz Männer und Frauen hinsichtlich Ihres Alters oder der zentralen Tendenz unterscheiden? Bei der zentralen Tendenz müsste ich vermutlich erstmal jeweils für die Männergruppe und Frauengruppe einzeln die zentrale Tendenz berechnen.

Re: Erstellen neuer Variablen in R

Verfasst: Mo Mai 18, 2020 7:17 am
von bigben
Hi!

Nochmal: Ich glaube, Deine Herangehensweise an R ("wie löst man jenes") wird scheitern. Du musst Dir ein Grundlagenverständnis von R schaffen, sonst werden Dich hundert Beispiellösungen nicht erhellen sondern verwirren. Ja, ich weiß, dass das bei Word und Excel und vielen anderen Programmen anders ist.
Wie kann man denn in R Unterschiede zwischen zwei Variablen (wäre das Wort jetzt hier richtig angebracht?) z.B. Mann/Frau untersuchen?
Es gibt keine Variable Mann und keine Variable Frau in Deinem Datensatz.Es gibt aber eine Variable, die das Geschlecht codiert. Klingt pedantisch, diese sprachliche Genauigkeit ist aber wichtig, weil man in R den Unterschied zwischen zwei Variablen anders untersucht als den Unterschied von Gruppen, die in einer Variablen definiert werden.
Der t-Test auf Geschlechterunterschiede wird hier sehr gut vorgemacht: https://youtu.be/RlhnNbPZC0A
Alternativ ist das Kapitel 8.3 im von Jörg verlinkten PDF.
Bei der zentralen Tendenz müsste ich vermutlich erstmal jeweils für die Männergruppe und Frauengruppe einzeln die zentrale Tendenz berechnen.
Wikipedia listet 16 Maße der zentralen Tendenz auf. Den Mittelwert, bei dem Dir der t-Test hilft. Der Mediantest wird in R nicht automatisch mitgeliefert, aber auch so ausgefallene Tests kann man in packages nachladen. Vorher musst Du entscheiden, wie Du mit den Datensätzen Nr. 9, 53 und 76 umgehen willst.


Viel Erfolg,
Bernhard

Re: Erstellen neuer Variablen in R

Verfasst: Mo Mai 18, 2020 8:25 am
von jogo
Hallo Gottchen,

hier kommt Dein t-Test

Code: Alles auswählen

hend <- read.csv2("http://forum.r-statistik.de/download/file.php?id=978")
# str(hend)
# hend$Mittelwert <- rowMeans(hend[,c("StrongMixed", "NotTorn", "Indecisive")])
# plot(table(hend$Mittelwert))
mean(hend$Age)
t.test(Age ~ Gender, data=hend)
Gruß, Jörg