【发布时间】:2020-12-05 18:56:47
【问题描述】:
我想根据多个条件(不同列中的不同条件)过滤掉行。但不知道怎么做。
这就是我想要做的。
创建数据库:
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)
分贝
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" 和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
【问题讨论】: