R语言:按多变量条件删除数据框行失败,求解决方案
删除数据框中满足多变量条件的行
你代码的问题出在逻辑判断上:原语句m != "March" & Y != "2022"要求行必须同时满足「不是3月」和「不是2022年」,但你的数据里没有符合这个要求的行,所以返回了空数据框。
正确的逻辑应该是:排除掉**同时满足m="March"和Y="2022"**的行,也就是保留所有不满足这个组合条件的行。
下面是两种基于dplyr的可行解法:
方法1:用filter()(推荐,dplyr标准用法)
library(tidyverse) m <- c("March","March","March", "April", "May","June") Y <- c("2022","2022","2021","2022","2022","2022") N <- c(152,75,869,421,748,52) df <- data.frame(m,Y,N) # 过滤掉2022年3月的行 df <- df %>% filter(!(m == "March" & Y == "2022")) df
运行后输出:
m Y N 1 March 2021 869 2 April 2022 421 3 May 2022 748 4 June 2022 52
方法2:修正subset()的逻辑
如果习惯用subset(),只需要把条件改成否定组合判断即可:
df <- df %>% subset(!(m == "March" & Y == "2022"))
补充:你也可以用等价的逻辑或条件m != "March" | Y != "2022"来实现,结果完全一致。
内容的提问来源于stack exchange,提问作者HMK
相关产品推荐
相关产品推荐

