2014-02-24 66 views
-1

我有兩個向量,其中都有NA值。我試圖找到我的兩個向量創建的表卡方值,但我得到這個錯誤:查找具有NA值的Chi-Squared

Error in chisq.test(data.table) :
all entries of 'x' must be nonnegative and finite

是否有一個代碼從表中刪除NA值?

我沒有找到一些代碼來做這個向量,但我不知道這是如何工作的。如果NA值從一個向量中刪除,那麼來自另一個向量的相應值是否不會進入卡方計算?

向量有8,000多個值,每行對應一個主題,所以如果該主題未能回答問題,我也不想使用他/她的其他答案。我希望這是有道理的。

+1

歡迎來到StackOverflow!請花一分鐘時間閱讀關於如何提供[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),其中包含數據和代碼那產生了這個錯誤。 – Thomas

回答

1

解決辦法之一就是在運行測試之前從數據中提取NA值。

重現將是有益的在這裏,但我猜你的數據是這個樣子:

control<-c(runif(5),NA,runif(4)) 
treatment<-c(runif(3),NA,runif(6)) 

在這種情況下,把你的數據轉換成數據幀,可以用於與每一個主題都值NA在任一值中:

df<-data.frame(control,treatment) 
df<-df[-which(is.na(df$treatment)),] 
df<-df[-which(is.na(df$control)),] 

您的數據現在只包含沒有任何缺失數據的主題,並且可以隨意測試。

+0

永久地改變數據對象是挖掘自己洞穴的好方法。 @托馬斯提供一個實例的建議更有建設性。 –