我需要一种方法来将向量(血样值)除以时间间隔因子(gacat)的每个级别,并在结果因子变量的两个级别之间比较这些数据(通过t.test / ANOVA或Kruskal Wallis) (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
中的数据的最后一级(在上面的示例齿轮中)只有一个是/否结果,因此整个代码将引发错误:< / p>
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,而不是删除整个代码?