首页 > 解决方案 > 如何删除 2 组的一些 NA

问题描述

假设我有

    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    1      3     NA
    1      3    NA
    2      1     2
    2      1     NA
    2      2     NA
    2      2     NA

第一列是家庭索引,第二列是每个家庭的人数。我想删除每个家庭中每个人的模式为 NA 的行。例如,在第三人的第一个家庭模式列中都是 NA ,所以我想删除它。第二个家庭的第二个人也一样

输出:

    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    2      1     2
    2      1     NA

标签: rdataframe

解决方案


library(data.table)
dt[, .SD[ ( !all( is.na( mode ) ) ) ], by= .( HH, PP ) ][]

   HH PP mode
1:  1  1    2
2:  1  1   NA
3:  1  1   NA
4:  1  2    2
5:  1  2    2
6:  2  1    2
7:  2  1   NA

样本数据

dt <- fread("    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    1      3     NA
    1      3    NA
    2      1     2
    2      1     NA
    2      2     NA
    2      2     NA")

推荐阅读