Das Problem taucht nur dann auf, wenn man chisq.test() eine Tabelle übergibt - wenn man die beiden Faktoren separat in zwei Parametern übergibt, dann funktioniert alles auch mit den NA-Werten korrekt. Hier ein kleines Script zur Demonstration:
testdata = data.frame(cbind(
X = rep(c("A","A","A","A","A","A","B","B","B","B","A","A","A","A","A","A","B","B","B","B"), 5),
Y = rep(c("A","A","A","A","B","B","B","B","B","B","A","A","A","A","A","B","B","B","B","A"), 5)
))
testdata$X = factor(testdata$X, levels=c("A", "B", "NA"))
testdata$Y = factor(testdata$Y, levels=c("A", "B", "NA"))
chisq.test(testdata$X, testdata$Y)
chisq.test(table(testdata$X, testdata$Y))