代码之家  ›  专栏  ›  技术社区  ›  hannes101

删除子集会产生与预期不同的行数

  •  0
  • hannes101  · 技术社区  · 7 年前

    # Rows to be removed
    dt[Agency == "A" & cntra_mp_id == "C" & cmsn_trd == "N", .N ]
    [1] 717329
    

    问题是,实际上没有子集的数据集要小得多。我想not运算符的应用不正确,对吗?这里有什么问题。

    # Data.table without the rows
    dt[!(Agency == "A" & cntra_mp_id == "C" & cmsn_trd == "N"), .N ]
    [1] 15127505
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   hdkrgr    7 年前

    一个可能的原因可能是您的列包含 NA !(Agency == "A" & cntra_mp_id == "C" & cmsn_trd == "N") 将评估为 NA 但只有那些它返回的地方 TRUE 将被计算在内。

    dt[ !(Agency == "A" & cntra_mp_id == "C" & cmsn_trd == "N") | is.na(Agency) | is.na(cntra_mp_id) | is.na(cmsn_trd), .N ]