【问题标题】:Factor Variable Labelling but proportionally因子变量标签,但按比例
【发布时间】:2021-11-03 11:24:11
【问题描述】:

我正在组织数据集,但在因子变量方面存在问题。我的性别变量总数为 3246,其中大多数是男性。我在性别类别中有 50 个NA。我不想用NA 删除观察结果,但也不想用“男性”或“女性”替换所有观察结果。我想随机将 7 个 NA 更改为“女性”,将 43 个更改为“男性”。但是,我无法管理它。

我已经知道如何将NA 更改为一种类型。

data$Gender[is.na(data$Gender)] = 'male'

【问题讨论】:

    标签: r dataframe na


    【解决方案1】:

    您可以使用is.na() 将变量子集化为na 对象,在naTRUETRUEsum 长度的universe 中创建一个sample ,并用新样本替换子集。举个例子:

    ## example data
    n <- 1e3
    set.seed(42)
    x <- sample(c('f', 'm'), n, replace=TRUE)
    x[sample(length(x), 50)] <- NA
    table(x, useNA="ifany")
    # x
    #     f    m <NA> 
    #   476  474   50 
    
    ## solution 1
    u <- unique(na.omit(x))  ## value universe  
    na <- is.na(x)  ## subset variable
    x[na] <- sample(u, sum(na), replace=TRUE)  ## new sample
    table(x, useNA="ifany")  ## result
    # x
    #   f   m 
    # 504 496 
    

    您也可以使用非缺失数据的比例来创建女性和男性,如下所示:

    ## solution 2 (Note: Create example data again from above)
    p <- proportions(table(x))  ## proportions
    na <- is.na(x)  ## subset variable
    x[na] <- sample(names(p), sum(na), replace=TRUE, prob=p)  ## new sample
    table(x, useNA="ifany")  ## result
    # x
    #   f   m 
    # 500 500 
    

    【讨论】:

    • 亲爱的 jay.sf,提供的解决方案非常棒。非常感谢!!
    • @mochi 总是乐于提供帮助!请注意我对第二个解决方案的小编辑,以使其独立于第一个解决方案。也请考虑回答已回答的问题,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多