r - 有条件地跨 R 中的多列过滤行
问题描述
我想根据多个条件(不同列中的不同条件)过滤掉行。但无法弄清楚如何。
这是我想要做的。
创建数据库:
library(tidyverse)
set.seed(97531)
pri <- rnorm(n=20, mean = 100, sd = 5)
mkt <- rep(c("Chi","Dhk","Khl","Rjs", "Rng"),each=4)
lvl <- rep(rep(c("Rtl", "Wsl"),each=1),10)
db <- cbind.data.frame(mkt, lvl, pri)
D b
mkt lvl pri
1 Chi Rtl 101.79284
2 Chi Wsl 97.33092
3 Chi Rtl 93.36634
4 Chi Wsl 102.22875
5 Dhk Rtl 91.00349
6 Dhk Wsl 96.95135
7 Dhk Rtl 104.16821
8 Dhk Wsl 101.05877
9 Khl Rtl 107.14062
10 Khl Wsl 91.55958
11 Khl Rtl 107.03500
12 Khl Wsl 98.10662
13 Rjs Rtl 96.46905
14 Rjs Wsl 103.93505
15 Rjs Rtl 92.98060
16 Rjs Wsl 97.28547
17 Rng Rtl 96.41526
18 Rng Wsl 96.78083
19 Rng Rtl 99.58515
20 Rng Wsl 95.69551
我想要的是在mkt=="Chi"
AND时排除案例lvl=="Wsl"
。我尝试了以下代码:
db %>% filter(lvl!="Wsl", mkt!="Chi")
这将返回以下输出:
mkt lvl pri
1 Dhk Rtl 91.00349
2 Dhk Rtl 104.16821
3 Khl Rtl 107.14062
4 Khl Rtl 107.03500
5 Rjs Rtl 96.46905
6 Rjs Rtl 92.98060
7 Rng Rtl 96.41526
8 Rng Rtl 99.58515
期望的输出是:
1 Chi Rtl 101.79284
3 Chi Rtl 93.36634
5 Dhk Rtl 91.00349
6 Dhk Wsl 96.95135
7 Dhk Rtl 104.16821
8 Dhk Wsl 101.05877
9 Khl Rtl 107.14062
10 Khl Wsl 91.55958
11 Khl Rtl 107.035
12 Khl Wsl 98.10662
13 Rjs Rtl 96.46905
14 Rjs Wsl 103.93505
15 Rjs Rtl 92.9806
16 Rjs Wsl 97.28547
17 Rng Rtl 96.41526
18 Rng Wsl 96.78083
19 Rng Rtl 99.58515
20 Rng Wsl 95.69551
解决方案
我们可以否定整个表达式 ( lvl == "Wsl" & mkt == "Chi")
with!
library(dplyr)
db %>%
filter(!(lvl=="Wsl" & mkt == "Chi"))
-输出
# mkt lvl pri
#1 Chi Rtl 101.79284
#2 Chi Rtl 93.36634
#3 Dhk Rtl 91.00349
#4 Dhk Wsl 96.95135
#5 Dhk Rtl 104.16821
#6 Dhk Wsl 101.05877
#7 Khl Rtl 107.14062
#8 Khl Wsl 91.55958
#9 Khl Rtl 107.03500
#10 Khl Wsl 98.10662
#11 Rjs Rtl 96.46905
#12 Rjs Wsl 103.93505
#13 Rjs Rtl 92.98060
#14 Rjs Wsl 97.28547
#15 Rng Rtl 96.41526
#16 Rng Wsl 96.78083
#17 Rng Rtl 99.58515
#18 Rng Wsl 95.69551
或者另一种选择是用于|
db %>%
filter(lvl != "Wsl"| mkt != "Chi")
推荐阅读
- python - Python迭代不会改变
- javascript - 从 Angular 上传 imagem Base64 到 S3
- python - 写入 CSV 文件?
- python - tkinter 窗口图标是否可以在程序托盘中具有加载背景,例如 chrome 下载内容时
- mysql - Multiple Joins With Condition
- python - Python:使用 async/await 进行递归
- pine-script - 未来是否有可能划清界限?
- python - 如何在张量流中使用自编码器模型计算新图像的分数以进行异常检测?
- firebase - Firebase 不向 BigQuery 提供 iOS 事件
- python - 在 python 中取消暂停和暂停 dag