Hallo Jörg,
ich muss noch mal auf meine Formel zurückkommen, ich habe einen Denkfehler gemacht und die Berechnung ist leder falsch. Kannst Du bitte noch mal mit reindenken, wie die Formel für die korrigierte Andwendung aussehen muss?
Der relevante Ausschnitt der zu verwendenden Daten ist im Anhang zu sehen.
Die Variablen OCAI (A-D) und idOCAI (A-D) liegen numerisch vor, domCul sind Faktoren.
Dies hier war die funktionierende Formel, leider war "ziehe von jedem ermittelten Wert immer u_domCulstr ab" falsch.
Code: Alles auswählen
Dataframe$POfitstr <- NA
Dataframe$POfitstr <- with(Dataframe, {
i <- u_domCul.faktor == "Familie"; POfitstr[i] <- u_idOCAIA[i]
i <- u_domCul.faktor == "Adhocratie"; POfitstr[i] <- u_idOCAIB[i]
i <- u_domCul.faktor == "Markt"; POfitstr[i] <- u_idOCAIC[i]
i <- u_domCul.faktor == "Hierarchie"; POfitstr[i] <- u_idOCAID[i]
POfitstr - u_domCulstr
})
Richtig ist aber: bei "Familie" idOCAI
A minus OCAI
A, bei Adhocratie idOCAI
B - OCAI
B, usw.
Ich habe versucht, das selbst in zwei Schritten zu lösen, erst als Vorbereitung den für die Voraussetzung A, B, C oder D passenden Wert OCAI in eine separate Variable zu ziehen und dann wieder mit der Voraussetzung A, B, C oder D die entsprechende Differenz zu bilden. Bereits beim ersten Schritt bekomme ich eine Fehlermeldung:
Code: Alles auswählen
Tabelle.OCAI$POfitvor<- NA
Tabelle.OCAI$POfitvor <- with(Tabelle.OCAI, {
i <- domCul == "A"; POfitvor[i] <- OCAIA[i]
i <- domCul == "B"; POfitvor[i] <- OCAIB[i]
i <- domCul == "C"; POfitvor[i] <- OCAIC[i]
i <- domCul == "D"; POfitvor[i] <- OCAID[i]
})
Error in `$<-.data.frame`(`*tmp*`, POfitvor, value = c(43.0555555555556, :
replacement has 90 rows, data has 258
Ich bin ratlos, welchen 90 Daten da gemeint sein sollen, diese Summe passt zu keiner der vier Untergruppen A-D.
Den zweiten Schritt hatte ich mir dann so gedacht:
Code: Alles auswählen
Tabelle.OCAI$POfitstr<- NA
Tabelle.OCAI$POfitstr <- with(Tabelle.OCAI, {
i <- domCul == "A"; POfitstr[i] <- (idOCAIA[i]-POfitvor[i])
i <- domCul == "B"; POfitstr[i] <- (idOCAIB[i]-POfitvor[i])
i <- domCul == "C"; POfitstr[i] <- (idOCAIC[i]-POfitvor[i])
i <- domCul == "D"; POfitstr[i] <- (idOCAID[i]-POfitvor[i])
})
Was meinst Du dazu?
ALTERNATIVE
Weil das alles so ein Elend ist, hat mein Prof schon zugestimmt, dass ich das einfach in excel berechne, was ganz fix geht, nur leider bekomme ich die Tabelle nicht mehr "heile" in R zurück. Die Zahlenwerte in POfitstr sind entweder ergänzt um leere Felder (nicht überall kann die Differenz berechnet werden aufgrund fehlenden Werte) oder ich habe überall NA reingeschrieben. Beim Importieren (über import dataset im workspace) wird die Variable zu einem Faktor oder auch Character, je nachdem ob mit Leerstellen oder NA. Ich habe auch versucht, eine reine Excel-Datei nur bestehend aus der neu berechneten Variable einzulesen, dann bekomme ich das als data.frame in R...
Wenn es einfacher ist, dieses Problem zu beheben, gehe ich auch sehr gern diesen Weg!!!
Lieben Dank!
Karen