【问题标题】:Replace unwanted values of factor level with NA用 NA 替换不需要的因子水平值
【发布时间】:2012-04-08 18:07:43
【问题描述】:

我有一个包含空白缺失值和 NA 的大型数据框。 执行 summary(factor(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】:

    试试这个:

    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。

    【讨论】:

    • 不幸的是,这对我不起作用,因为我的因子水平实际上并不称为 A:C。我尝试了等效于 levels(df$col)
    • 好的,我做了levels(df$col)
    猜你喜欢
    • 2017-12-07
    • 2021-03-13
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多