2017-06-02 3 views
2

Ich habe einen Datensatz Komorbidität in RStudio, wo ich Spalten wie MDDOnset hinzugefügt habe, und wenn das Alter bei Beginn von MDD < der Beginn von OUD ist es gleich 1, und wenn das Gegenteil wahr ist, dann ist es gleich 2. I haben Sie auch eine andere Spalte PhysDis, die Werte 0-100 (numerisch in der Natur) hat.Wie erstelle ich eine Spalte mit Werten einer zweiten Spalte, die die Bedingungen eines dritten in R erfüllen?

Was ich tun möchte, ist eine neue Spalte, die die Werte von PhysDis enthält, aber nur wenn MDDOnset == 1, und eine andere wenn MDDOnset == 2. Ich möchte diese Spalten so machen, dass ich einen T-Test an ihnen durchführen kann und die zwei Gruppen (jene mit MDD vor OUD und diejenigen, die MDD nach OUD hatten, bezüglich welcher Gruppe eine größere körperliche Behinderungspunktzahl hat) vergleichen. Ich möchte jeden Fall, in dem MDDOnset nicht 1 ist, um NA zu sein.

ttest1 <-t.test(Comorbidity$MDDOnset==1, Comorbidity$PhysDis) 
ttest2 <-t.test(Comorbidity$MDDOnset==2, Comorbidity$PhysDis) 

Als ich das tat zweimal den t-Test, einmal wo MDDOnset = 1 und eine andere, wenn es 2 entsprach, war der Mittelwert für y (Komorbidität $ PhysDis) gleich, und wenn ich in die ursprüngliche CSV-Datei sah, Es stellte sich heraus, dass dieser Mittelwert der Mittelwert der gesamten Spalte war und nicht nur Fälle, in denen MDDOnset einen Wert von eins oder zwei hatte. Wenn es eine andere Möglichkeit gibt, die T-Tests auszuführen, die nur dann den Mittelwert von PhysDis haben, wenn MDDOnset = 1 ist, und einen anderen mit dem Mittelwert von PhysDis, wenn MDDOnset == 2, das keine neuen Spalten benötigt, dann sag es mir bitte .. Entschuldigen Sie, wenn es ähnliche Fragen gibt oder wenn meine Herangehensweise weit entfernt ist, ich bin neu in R und Programmierung im Allgemeinen und danke im Voraus.

Hier ist ein kleinerer Datenrahmen, wo ich versucht habe, den Fehler zu replizieren, wo die neuen Spalten die Länge gewechselt haben. Das Problem wäre, dass die Länge von C 4 wäre und die Länge von D 6 wäre, wenn ich den Fehler replizieren könnte.

> A <- sample(1:10) 
> B <-c(25,34,14,76,56,34,23,12,89,56) 
> alphabet <-data.frame(A,B) 
> alphabet$C <-ifelse(alphabet$A<7, alphabet$B, NA) 
> alphabet$D <-ifelse(alphabet$A>6, alphabet$B, NA) 
> print(alphabet) 
    A B C D 
1 7 25 NA 25 
2 9 34 NA 34 
3 4 14 14 NA 
4 2 76 76 NA 
5 5 56 56 NA 
6 10 34 NA 34 
7 8 23 NA 23 
8 6 12 12 NA 
9 1 89 89 NA 
10 3 56 56 NA 
> length(which(alphabet$C>0)) 
[1] 6 
> length(which(alphabet$D>0)) 
[1] 4 
+1

Wenn Sie eine Teilmenge von Daten einschließen können, ist es einfacher, das Beispiel zu reproduzieren, um die Frage zu beantworten. Siehe https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – austensen

Antwort

0

Ich würde den Mutate-Befehl aus dem dplyr-Paket verwenden.

Verwandte Themen