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