2015-04-18 74 views
-1

有一個數值數據的數據框,並使用與列的中位數一起使用。即使列中有一些非零條目,我也會得到NA的中位數。我做了str(df)來確保所有的df都是整數,而且是。當R說中位數是NA時,這意味着什麼?謝謝。median()對於整數df返回爲NA?

v1 v2 v3..... 
1 3 4 
0 0 0 
. . . 

另外,我有一堆警告這樣的: 「1:在mean.default(排序(X,局部=半+ 0L:1L)[半+ ...: 參數不是數字或邏輯:回覆NA」

+0

http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example你不清楚你是如何得到錯誤的。基於這個例子,它工作'set.seed(24); df1 < - as.data.frame(matrix(sample(0:5,10 * 5,replace = TRUE),ncol = 5));適用(df1,2,中位數)' – akrun

回答

0

我的解決辦法是微不足道,但也許有一些來港定居,你沒看見嘗試使用與na.rm = FALSE在最後一個參數(省略號)申請

使用提供的代碼。 by akrun。

set.seed(24) 
df1 <- as.data.frame(matrix(sample(0:5, 10*5, replace=TRUE), ncol=5)) 
apply(df1, 2, median) 

我添加一些NA

df1[ 3 , "V2" ] <- NA 

,然後使用sapply(這是相同的,由於這樣的事實,數據幀是一類型的列表)

sapply(df1, median, c(na.rm = TRUE)) 

編輯:

考慮即使在第3行列V2處存在NA,str(df1)也返回int。