我需要一种方法将向量(血液样本值)除以时间间隔因子(gacat)的每个水平,并在结果因子变量(EPL(是/否))
在 mtcars df 中:
df1 <- mtcars
df1$cyl <- factor(df1$cyl)
df1$gear <- factor(df1$gear)
这段代码很好地解决了我的问题。使用方差分析:
lapply(split(df1, df1$gear), function(d){summary(aov(mpg~cyl, data=d))})
但是,由于(在上面的示例齿轮中)我的数据的最后一级split
只有一个是/否结果,整个代码抛出错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
我的数据:
No Yes
<6 weeks 89 21
6-8 weeks 166 37
8-10 weeks 158 18
10-12 weeks 131 5
>12 weeks 90 **0**
* 中的零似乎是问题所在……在示例中,这不是问题,因为每个因素都至少有两个级别:
table(df1$cyl, df1$gear)
3 4 5
4 1 8 2
6 2 4 1
8 12 0 2
由于我需要检查大量血液样本,因此我希望通过一个简短的代码块来进行这些比较。有什么方法可以让 R 在最后一级抛出 NaN,而不是丢弃整个代码?