【发布时间】:2015-02-19 02:13:31
【问题描述】:
我有一个包含一些 NA 的数据列 (Percent.Plant.Parasites)。我想取按因子“Stage”排序的数据的平均值(即stage1 Mean=x,stage2 Mean=y等)。我尝试使用
tapply(rawdata$Percent.Plant.Parasites, rawdata$Stage, mean)
但是,我得到了 NA,因为数据中有 NA。我不相信 tapply 有一个 na.rm 选项(有吗?),所以我尝试使用以下方法计算每个单独阶段因子的平均值:
mean(subset(rawdata,subset=Stage=="stage1")$Percent.Plant.Parasites, na.rm=TRUE)
无济于事。相反,我得到了错误:
In mean.default(subset(rawdata, subset = Stage == "Kax")$Percent.Plant.Parasites, :
参数不是数字或逻辑:返回 NA
但是,当我这样做时:
typeof(subset(rawdata,subset=Stage=="Kax")$Percent.Plant.Parasites)
我收到integer
任何想法我哪里出错了?
谢谢。
【问题讨论】:
-
试试
mean(subset(rawdata, Stage=="stage1")$Percent.Plant.Parasites, na.rm=TRUE) -
tapply的结构为:tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)。您可以尝试在...参数中指定na.rm = TRUE,如下所示:tapply(rawdata$Percent.Plant.Parasites, rawdata$Stage, mean, na.rm = TRUE) -
什么是
class(rawdata$Percent.Plant.Parasites)?我打赌这是“因素”,在这种情况下,您可能需要致电rawdata$Percent.Plant.Parasites <- as.numeric(as.character(Percent.Plant.Parasites)) -
谢谢大家。我最终使用 ddply 解决了这个问题并总结。
标签: r