如何删除关于2组的某些NA

时间:2019-09-17 14:37:07

标签: r dataframe

假设我有

    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

1 个答案:

答案 0 :(得分:1)

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")