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