2017-02-23 30 views
-1

我是R的新手,所以请在原谅之前原谅我的无知。警告:参数不是数字

我有一个看起来像这样的数据集。 jetleg.dat是我的数据集。

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

我需要得到治疗和移位的平均值。

当我做计算,

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

mean(control) 
mean(light) 

我得到这个通知:

警告消息: 在mean.default(对照):参数不是数字或逻辑:返回NA

我明白,控制和光是非数字的,但我认为我在计算中占了。我之前已经完成了这个工作,而且工作。任何帮助,将不胜感激。谢谢。

+0

你可以提供重复编码吗?通过http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

回答

0

您指的是名为percent的列,我无法看到它。我会假设它应该是$phaseshift

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

mean(control) 
mean(light) 

如果这仍然给你同样的错误,尽量把它包在as.numeric

mean(as.numeric(control))

0

这似乎是大部分语法是你的问题在这里。

首先,当您的变量的名称为phaseshift位于上一行时,请致电$percent

二,$percent$phaseshift需求是之前的括号

和最后,不应该有后jetlag.dat$treatment == "control"声明任何逗号。

这里是你的代码的修改版本,它的工作原理:

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) 

希望这有助于!

相关问题