相当于 R 中子集化数据帧时的 "except" 命令



我有一个这样的数据集:

是是
ID 金额 会员卡
345890是
345791 678921
341750 87023

如果IDc(341862, 345791)之一,则选择一行;如果Amount小于25000,则选择该行。

我们可以在R-基础上使用subset

res <- subset(df, ID %in% c(341862, 345791) | Amount <= 25000)
res
#      ID Amount MemberCard
#1 341862 400238        YES
#2 345791 678921        YES
#3 345716  12987        YES

或使用dplyr::filter-

library(dplyr)
df %>% filter(ID %in% c(341862, 345791) | Amount <= 25000)

如果您只希望Amount > 250000的观测值为空,则可以使用replace():

library(tidyverse)
df_new <- df %>% 
mutate(Amount = replace(Amount, Amount >250000, NA))

如果您想将结果应用于两列,您可以将其添加到mutate():

df_new <- df %>% 
mutate(Amount = replace(Amount, Amount > 250000, NA),
MemberCard = replace(Amount, Amount > 250000, NA))

这将保留ID,但如果满足条件,则删除所有其他值。希望这能有所帮助。😉

我们也可以使用

subset(df, ID == 341862| ID == 345791|Amount <= 25000)

最新更新