Проверка на разницу по результатам (да / нет) по каждому уровню фактора - при отсутствии одного уровня результата на уровне фактора
Мне нужен метод для деления вектора (значения образцов крови) на каждый уровень фактора временных интервалов (gacat) и сравнения этих данных (по t.test/ANOVA или Kruskal Wallis) между двумя уровнями в переменной фактора результата (EPL (да нет))
В Mtcars DF:
df1 <- mtcars
df1$cyl <- factor(df1$cyl)
df1$gear <- factor(df1$gear)
Этот код хорошо решает мою проблему., Используя anova:
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 для последнего уровня вместо того, чтобы отбросить весь код?