1

我需要一种方法将向量(血液样本值)除以时间间隔因子(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,而不是丢弃整个代码?

4

0 回答 0