r - 如何同时对多个变量使用anti_join?
问题描述
我想从 data2 (异常值)中删除 data1 (血液)中包含的 n 个变量的一些值。
new <- anti_join(blood1, outlier)
我正在使用anti_join
,没有“by”选项...结果是:“Joining, by = c("DIM", "PCV", "GLUOX", "COLEST", "UREA", "ca", "P ”、“Mg”、“Na”、“K”、“Cl”、“Zn”、“铜蓝蛋白”、“白蛋白”、“球蛋白”、“GOT”、“GGT”、“胆红素”、“ALP”、 “aptoglobina”、“NEFA”、“BHB”、“creatinina”、“Paraox”、“ROMt”、“SHp”、“FRAP”、“MPO”、“AOPP_C”)”...但不正确,请anti_join
保留data1 的所有值。
数据1
DIM PCV GLUOX
23 14 0.23
24 15 0.15
28 14 0.01
132 35 0.02
128 12 0.14
数据2
DIM PCV GLUOX
128 35 0.14
132 NA 0.23
NA NA 0.15
我的预期输出是:
DIM PCV GLUOX
23 14 NA
24 15 NA
28 14 0.01
NA NA 0.02
NA 12 NA
解决方案
您可以使用Map
此处将df2
存在的值df1
替换为NA
。
df1[] <- Map(function(x, y) replace(x, x %in% y, NA), df1, df2)
df1
# DIM PCV GLUOX
#1 23 14 NA
#2 24 15 NA
#3 28 14 0.01
#4 NA NA 0.02
#5 NA 12 NA
或者,如果您需要tidyverse
我们可以使用map2_df
相同逻辑的解决方案。
purrr::map2_df(df1, df2, ~replace(.x, .x %in% .y, NA))
推荐阅读
- php - 无法从文件“/var/simplesamlphp/cert/saml.pem”加载私钥
- javascript - 画布宽度/高度如何以及为什么会影响我的图像绘制?
- javascript - 按行 ID 更新谷歌电子表格
- salesforce - 在保存力上覆盖重定向:Salesforce Lightning 上的createRecord
- haskell - 将 min 命令映射到 haskell 中的多级列表
- relaymodern - 中继现代商店客户端中的排序连接
- python - Scrapy 极慢:可能是瓶颈
- jquery - 无法自动完成以使用 Jquery 和 Flask
- sql-server - 基于条件参数的查询?
- python - tf.keras h5 到 Tensorflow pb - 即使输入清楚地有它,导致 pb 缺少输出节点?