Игнорирование переменной в функции для теста хи-квадрат

Я строю пользовательскую функцию в г. Это выглядит так (фрейм данных - только пример):

library(dplyr)
library(lazyeval)

df<-data.frame(type1=c("a","b","c","a","b","c",NA),
               type2=c("d","e","f","d","e","f","f"),
               type3=c("d","f","g","e","f","g","e"),
               type4=c("e","f","g","e","f","g","e"))

f<-function(x){
  y<-df%>%
    dplyr::filter_(lazyeval::interp(~!is.na(x),x=as.name(x)))%>%
    dplyr::group_by_(x)%>%
    dplyr::summarize("Sum2"=sum(type2=="d"),
                     "Sum3"=sum(type3=="d"),
                     "Sum4"=sum(type4=="d"))
  y<-dplyr::bind_rows(y,setNames(data.frame("Total",
                                            sum(y$Sum2),
                                            sum(y$Sum3),
                                            sum(y$Sum4),
                                            paste(
                                              round(chisq.test(y$Sum2,y$Sum3)$p.value,3),
                                              "(Chi-sq.)")), 
                                 c(x, "Sum2","Sum3","Sum4","pvalue")))
  return(y)
}

result_f<-f("type1")

Проблема в том, что я хотел бы включить в хи-квадрат не только две, но три переменные (Sum2, Sum3 а также Sum4) потому что только в этом случае Sum2 а также Sum3 актуальны, но в других случаях функция может нуждаться в анализе трех переменных.

Есть ли способ включить Sum 4т.е. chisq.test(y$Sum2,y$Sum3,y$Sum4) вместо chisq.test(y$Sum2,y$Sum3), но с каким-то условным отбором, исключая те переменные, суммирующие ноль (например)?

0 ответов

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