Проверка на разницу по результатам (да / нет) по каждому уровню фактора - при отсутствии одного уровня результата на уровне фактора

Мне нужен метод для деления вектора (значения образцов крови) на каждый уровень фактора временных интервалов (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 для последнего уровня вместо того, чтобы отбросить весь код?

0 ответов

Другие вопросы по тегам