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

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

...