2012-02-01 16 views
4

我想這一點:當分組因子缺失值時,基線R中的boxplot可以顯示'NA'嗎?

a boxplot with NA as a category name

而且我認爲通過na.action=na.pass以箱線圖會讓NA在 顯示分組名稱。下面是一些示例代碼:

#Build a fake dataset 
set.seed(212012) 
nn = 100 
sample_data <- data.frame(score = c(rpois(nn, 1), rpois(nn, 2), 
             rpois(nn, 1.5), rpois(nn, 3)), 
          category = c(rep(0, nn), rep(1, nn), 
             rep(2, nn), rep(NA, nn))) 

boxplot(score ~ category, data=sample_data, na.action=na.pass) 

但是產生這樣的:

enter image description here

的「簡單」的方式來獲得我想要的是下面的代碼,但它不是偉大的探索性數據分析:

sample_data$category2 <- sample_data$category 
sample_data$category2[ is.na(sample_data$category) ] <- 'NA' 
boxplot(score ~ category2, data=sample_data) 

R Guru的任何提示都在那裏?我能夠了解從this more general discussion na.pass,並na.pass從Prof. Ripley here起源。但似乎沒有在數據中出現缺失數據(NA)和因子本身缺失數據之間的差異。我是否錯過簡單的東西,或者這是更多的功能要求?

回答

7

boxplot(score ~ factor(category,exclude=NULL), data=sample_data)

默認因子行爲是exclude=NA。我認爲內部的boxplot呼叫是factor調用如果沒有一個因素。這只是強制分解包括你的NA值。

+0

另請參閱'addNA'這正是這麼做的。 – James 2012-02-01 18:28:51

+0

正確! 'boxplot(score〜addNA(category),data = sample_data)'在內部'addNA'調用'factor''exclude = NULL' – Justin 2012-02-01 18:36:08

+0

我喜歡'boxplot(score〜addNA(category),data = sample_data)'有點短。感謝賈斯汀和詹姆斯! – 2012-02-01 18:36:20