2012-04-08 8 views
3

У меня есть большой фрейм данных, который содержит как пустые пробелы, так и NA. Выполнение резюме (фактор (DF $ цв)) дает мне что-то вродеЗаменить нежелательные значения уровня фактора с помощью NA

A 
123 
B 
50000 

90000 
C 
26000 
NA's 
12476 

(обратите внимание на пробел после 50000.)
и sum(is.na(df$col)) является 12476, так же, как число NA-х, но я d нравится, что это сумма пробелов и NA s.
Я попытался создать уровень для заготовок, делая
levels(df$col) <- c("A", "B", "Blank", "C")
А затем пытается df$col <- factor(df$col, exclude="Blank") и это говорит о том, что NA «s были получены, но мой выход такой же. Кто-нибудь знает, как создавать НС на основе фактора, или иметь лучшее решение для замены отсутствующих значений? Я думаю, что проблема может заключаться в том, что пробелы более одного символа пробела, поэтому они не превратились в NA, но я не знаю, как это подтвердить.

ответ

2

Попробуйте это:

df <- data.frame(a=11:18, col=c("C", "", "A", NA, "A", "", "C", NA)) 
levels(df$col) # "" "A" "C" 
sum(is.na(df$col)) # 2 

df$col <- factor(df$col, levels=LETTERS[1:3]) 
levels(df$col) # "A" "B" "C" 
sum(is.na(df$col)) # 4 

Так как новые уровни не включают пустой (""), все заготовки станут NA.

+0

К сожалению, это не сработает для меня, потому что мои уровни факторов на самом деле не называются A: C. Я попробовал эквивалент уровней (df $ col) <- c ("A", "B", "Blank", "C") и df $ col <- factor (df $ col, levels = c ("A" , "B", "C")), и это не сработало. Есть идеи? –

+0

Хорошо, я сделал уровни (df $ col) <- c (ПИСЬМА [1: 2], «Бланк», ПИСЬМА [3]) и df $ col <- factor (df $ col, levels = LETTERS [1: 3 ]), и это сработало. Большое вам спасибо за помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^