用NA替换不需要的因子级别值

问题描述 投票:3回答:1

我有一个包含空白缺失值和NA的大型数据框。执行摘要(因子(df $ col))给我一些类似的东西

A  
123  
B  
50000  

90000  
C  
26000
NA's  
12476  

(注意50000之后的空白。) 和sum(is.na(df$col))是12476,与NA的数量相同,但我希望它是空白和NAs的总和。 我试图通过这样做为空白创建一个级别 levels(df$col) <- c("A", "B", "Blank", "C") 然后尝试df$col <- factor(df$col, exclude="Blank"),它说生成了NA,但我的输出是相同的。有没有人知道如何根据因子水平创建NA或者有更好的解决方案来替换缺失的值?我认为问题可能是空白不仅仅是一个空格字符,所以它们没有变成NA,但我不知道如何确认。

r na r-factor
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.