2017-02-23 2 views
-1

Ich bin neu in R, also bitte vergib meine Unwissenheit vor der Hand.Warnung: Argument ist nicht numerisch

Ich habe einen Datensatz, der so aussieht. jetleg.dat ist mein Datensatz.

treatment phaseshift 
control  0.53 
control  0.36 
    light  -0.78 
    light  -0.86 

Ich brauche den Mittelwert für die Behandlung und Phasenverschiebung.

Wenn ich die Berechnung tun,

control <- jetlag.dat[jetlag.dat$treatment == 'control',]$percent 
light <- jetlag.dat[jetlag.dat$treatment == 'light',]$percent 

mean(control) 
mean(light) 

bekomme ich diese Meldung:

Warnmeldung: In mean.default (Kontrolle): Argument ist nicht numerisch oder logisch: Rückkehr

NA

Ich verstehe, dass Kontrolle und Licht nicht numerisch sind, aber ich dachte, dass ich dies in der Berechnung berücksichtigt. Ich habe das vorher schon so gemacht und es hat funktioniert. Jede Hilfe wäre willkommen. Vielen Dank.

+0

Können Sie einen Reproduktionscode eingeben? Gehen Sie durch http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

Antwort

0

Sie beziehen sich auf eine Spalte mit dem Namen percent, die ich nicht sehen kann. Ich nehme an, es sollte $phaseshift sein.

control <- jetlag.dat[jetlag.dat$treatment == 'control',]$phaseshift 
light <- jetlag.dat[jetlag.dat$treatment == 'light',]$phaseshift 

mean(control) 
mean(light) 

Wenn dies immer noch Sie den gleichen Fehler gibt, versuchen Sie es in as.numeric zu wickeln.

mean(as.numeric(control))

0

Es scheint meistens Syntax zu sein, die hier Ihr Problem ist.

Zuerst rufen Sie $percent, wenn Ihre Variable Namen phaseshift in der vorherigen Zeile ist.

Zweitens sind die $percent oder $phaseshift Bedürfnisse sein, bevor die Klammern

und schließlich gibt kein Komma nach jetlag.dat$treatment == "control" Anweisung sein sollten.

Hier ist eine überarbeitete Version des Codes und es funktioniert:

df <- data.frame(treatment = c("control", "control", "light", "light"), 
      phaseshift = c(0.53, 0.36, -0.78, -0.86)) 

control <- df$phaseshift[df$treatment == "control"] 
light <- df$phaseshift[df$treatment == "light"] 

control_mean <- mean(control) 
light_mean <- mean(light) 

hoffe, das hilft!

Verwandte Themen