带有data.table的子集,不涉及NA

问题描述 投票:0回答:1

我有一个data.table如下:

library(data.table)
dt <- fread(
    "A   B   D  E  iso   year   
     1   A   1  NA ECU   2009   
     2   B   2  0  ECU   2009   
     3   D   3  0  BRA   2011   
     4   E   4  0  BRA   2011   
     5   D   7  NA ECU   2008   
     6   E   1  0  ECU   2008   
     7   A   3  2  BRA   2012   
     8   A   4  NA BRA   2012",
  header = TRUE
)

我想删除列E2的行。

所以我想我可以做:dt<- setDT(dt)[E!=2],但这也删除了NA

我想我可以先用另一个数字替换所有NA,然后再将它们改回NA,但我宁愿直接这样做。

我如何告诉data.table不理会NA

所需的输出:

dt <- fread(
    "A   B   D  E  iso   year   
     1   A   1  NA ECU   2009   
     2   B   2  0  ECU   2009   
     3   D   3  0  BRA   2011   
     4   E   4  0  BRA   2011   
     5   D   7  NA ECU   2008   
     6   E   1  0  ECU   2008      
     8   A   4  NA BRA   2012",
  header = TRUE
)
r data.table subset
1个回答
0
投票

简单地将您的条件扩展到

dt <- dt[E != 2 | is.na(E)]
© www.soinside.com 2019 - 2024. All rights reserved.