Erstellen neuer Variablen in R
Re: Erstellen neuer Variablen in R
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.
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
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
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Erstellen neuer Variablen in R
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.
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!
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?
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!
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?
Zuletzt geändert von Gottchen am So Mai 17, 2020 2:24 pm, insgesamt 1-mal geändert.
Re: Erstellen neuer Variablen in R
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
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):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?
Code: Alles auswählen
help('$')
um Elemente zusammenzufügen, Hilfetext:Wofür steht rowMeans und wofür das c?
Code: Alles auswählen
?c
Code: Alles auswählen
example(c)
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)
Kennst Du dies schon?
https://cran.r-project.org/doc/manuals/ ... -intro.pdf
Gruß, Jörg
Re: Erstellen neuer Variablen in R
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.
anzeigen lassen, die Häufigkeitstabelle mit
Meistens ist es aber sinnvoller, die Daten im dataframe stehen zu lassen.
HTH,
Bernhard
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.
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.
Die Mittelwerte der drei Spalten pro Reihe kannst Du Dir mit3. 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?
Code: Alles auswählen
print(hend$Mittelwert)
Code: Alles auswählen
print(table(hend$Mittelwert))
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: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?
Code: Alles auswählen
Klaus <- hend$Mittelwert
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Erstellen neuer Variablen in R
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?
Und danke, jetzt weiß ich zumindest wie ich eine Variable z.B. "NeueVariable" einer anderen zufüge. Ist ja keine Herausforderung. Am Beispiel von jogo:
Also in diesem Falle könnte ich natürlich von Beginn an mscstart mit NeueVariable ersetzen.
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
>
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
Re: Erstellen neuer Variablen in R
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.
Ja, das erschien mir eine angemessene Interpretation vonWas genau ist denn dann dein Wert pro Person?
Der Mittelwert pro Person für alle drei (StrongMixed, NotTorn, Indecisive) zusammen?
-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?
.
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.Also in diesem Falle könnte ich natürlich von Beginn an mscstart mit NeueVariable ersetzen.Code: Alles auswählen
NeueVariable <- mscstart
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Erstellen neuer Variablen in R
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.
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
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.
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.
Viel Erfolg,
Bernhard
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.
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.Wie kann man denn in R Unterschiede zwischen zwei Variablen (wäre das Wort jetzt hier richtig angebracht?) z.B. Mann/Frau untersuchen?
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.
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.Bei der zentralen Tendenz müsste ich vermutlich erstmal jeweils für die Männergruppe und Frauengruppe einzeln die zentrale Tendenz berechnen.
Viel Erfolg,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Erstellen neuer Variablen in R
Hallo Gottchen,
hier kommt Dein t-Test
Gruß, Jörg
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)