Может ли блок-график в базе R отображать 'NA', когда коэффициент группировки имеет пропущенные значения? - PullRequest
4 голосов
/ 01 февраля 2012

Я хочу это:

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 там?Мне удалось узнать о na.pass из этого более общего обсуждения и происхождении na.pass из Prof.Рипли здесь .Но, похоже, нет различия между отсутствующими данными (NA), появляющимися в данных, которые будут разделены на фактор, и отсутствующими данными в самом факторе.Я упускаю что-то простое или это скорее запрос функции?

1 Ответ

7 голосов
/ 01 февраля 2012

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

коэффициент поведения по умолчанию exclude=NA. Я предполагаю, что внутренний вызов boxplot является вызовом factor, если это уже не является фактором. Это просто заставляет факторизацию включать ваши значения NA.

...