Wo liegt der Fehler?

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

Moderatoren: EDi, jogo

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

Re: Wo liegt der Fehler?

Beitrag von jogo »

Bei mir funktioniert es.

Code: Alles auswählen

> aggregate( as.matrix(d[c(15,22,29,36,43)]) ~ Geschlecht, data=d, FUN=sd, na.rm=TRUE)
  Geschlecht   preODI     poODI    po3ODI    p6ODI   po12ODI
1          F 14.71008 18.304661 13.918322 14.29770 15.337615
2          M 13.04267  7.361688  8.608781  7.07892  6.708204
Ich habe mal meine Glaskugel befragt:
sie meint ich soll Dich nach dem Output von

Code: Alles auswählen

str(sd)
fragen, weil der Verdacht besteht, dass Du irgendwann ein eigenes Objekt sd definiert hast.
So ähnlich wie bei

Code: Alles auswählen

mean <- "hallo"
aggregate( as.matrix(d[c(15,22,29,36,43)]) ~ Geschlecht, data=d, FUN=mean, na.rm=TRUE)
Wenn Du unbedingt ein Objekt mit dem Namen sd verwenden möchtest, dann musst Du für die Verwendung der ursprünglichen Funktion sd() einen qualifizierten Bezeichner einsetzen:

Code: Alles auswählen

aggregate( as.matrix(d[c(15,22,29,36,43)]) ~ Geschlecht, data=d, FUN=base::sd)
Gruß, Jörg
RCarlos

Re: Wo liegt der Fehler?

Beitrag von RCarlos »

In der Tat habe ich mal eine Variable sd angelegt

Code: Alles auswählen

> rm(sd)
> de<-aggregate( as.matrix(d[c(12,19,26,33,40)]) ~ Geschlecht, data=d, FUN=sd, na.rm=TRUE)
> de
  Geschlecht  preVASR   poVASR  po3VASR  po6VASR po12VASR
1          F 2.059715 1.348400 1.898963 1.083625 1.564279
2          M 2.061553 1.364225 1.224745 1.333333 1.000000
RCarlos

Re: Wo liegt der Fehler?

Beitrag von RCarlos »

aber insgesamt machen mich die Ergebnisse aber stutzig, da sie nicht mit vorherigen Berechnungen übereinstimmen:

Code: Alles auswählen

> de<-aggregate( as.matrix(d[c(12,19,26,33,40)]) ~ Geschlecht, data=d, FUN=mean, na.rm=TRUE)
> de
  Geschlecht  preVASR   poVASR  po3VASR  po6VASR po12VASR
1          F 5.666667 3.000000 2.833333 3.083333 3.083333
2          M 3.666667 1.111111 2.000000 1.555556 1.666667
> df<-subset(d,d$Geschlecht=="F")
> dm<-subset(d,d$Geschlecht=="M")
> mean(df$preVASR)
[1] 5.473684
> mean(dm$preVASR)
[1] 4.671429
5.473684 sollt der gleiche Wert wie 5,666667 sein und 4,671429 wie 3,666667.....
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Wo liegt der Fehler?

Beitrag von jogo »

bei aggregate() erfolgt der NA-Ausschluss komplett zeilenweise. IMHO kann man das aber mit einem Parameter steuern.
Du möchtest:

Code: Alles auswählen

aggregate( as.matrix(d[c(12,19,26,33,40)]) ~ Geschlecht, data=d, FUN=mean, na.action = na.pass, na.rm=TRUE)
# > aggregate( as.matrix(d[c(12,19,26,33,40)]) ~ Geschlecht, data=d, FUN=mean, na.action = na.pass, na.rm=TRUE)
#   Geschlecht  preVASR   poVASR  po3VASR  po6VASR po12VASR
# 1          F 5.473684 2.767442 2.804878 3.264706 3.150000
# 2          M 4.671429 2.268293 2.911765 2.833333 2.266667
BTW:
Bei subset() reicht z.B.: df <- subset(d, Geschlecht=="F")
RCarlos

Re: Wo liegt der Fehler?

Beitrag von RCarlos »

super. so sind die Werte identisch.
Ich danke dir für deine Mühen!

Gruß
RCarlos
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Wo liegt der Fehler?

Beitrag von bigben »

Jörg bekommt hiermit offiziell die Hellseher-Ehrenmedaille verliehen! Bravo!
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
RCarlos

Re: Wo liegt der Fehler?

Beitrag von RCarlos »

Hallo Jörg,

eine weitere Frage fällt mir dazu ein. Wie müsste ich vorgehen, wenn ich nicht nur nach Geschlecht unterteilen möchte, sondern nach z.B. Geschlecht und Alter <60 jahre?

Gruß
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Wo liegt der Fehler?

Beitrag von jogo »

Code: Alles auswählen

aggregate( cbind(preVASR, poVASR, po3VASR, po6VASR, po12VASR) ~ Geschlecht + (Alter<60), data=d, FUN=mean, na.action = na.pass, na.rm=TRUE)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Wo liegt der Fehler?

Beitrag von jogo »

bigben hat geschrieben: Mi Jun 21, 2017 11:50 am Jörg bekommt hiermit offiziell die Hellseher-Ehrenmedaille verliehen! Bravo!
das liegt alles nur an der handgefertigten, handpolierten und feinjustierten Glaskugel.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Wo liegt der Fehler?

Beitrag von bigben »

Ehrlich? Glaskugel? Ich habe eher den Verdacht, dass Du Algorithmen verwendest :shock:
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten