r语言 - 筛选唯一值无法正常工作



问题

我有两个数据帧:cubehub,变量分别为knb_ndnd

|      cube$knb_nd    |
|---------------------|
|          01         |
|          02         |
|          05         |
|          05         |
|          NA         |
|          07         |
|      hub$nd         |
|---------------------|
|          01         |
|          02         |
|          02         |
|          01         |
|          NA         |

我想在hub中不存在的knb_nd的基础上拥有cube的子集

|      restult$nd     |
|---------------------|
|          05         |
|          07         |

我尝试了什么

我试图在数据帧上使用unique()函数使用基本R进行筛选,但当我搜索ND时,它仍然显示在两个数据帧中。dplyr版本存在相同问题。

# base R version
cube[!c(unique(cube$knb_nd) %in% unique(hub$nd)),]
# dplyr version
cube %>% 
filter(!c(knb_nd %in% unique(hub$nd)))

我知道可能有一种简单而明显的方法可以找到它,但我似乎没有想过。

尝试:

library(dplyr)
result <- unique(anti_join(cube, hub, by = c("knb_nd" = "nd"))) %>% 
rename(nd = knb_nd)
nd
1  5
3  7

base R中存在问题

cube[!c(unique(cube$knb_nd) %in% unique(hub$nd)),]

unique(cube$knb_nb)可以返回比列的原始length更短的length,因此导出的逻辑向量也将具有更短的长度,从而创建不正确的子集。取而代之的是

cube[!cube$knb_nd %in% unique(hub$nd),]

最新更新