[英]Remove rows in df using multiple conditions in R
是否可以通過引用 2 列或更多列中的特定字符串或因子級別來刪除數據行? 對於小型數據集,這很容易,因為我可以滾動瀏覽數據框並刪除我想要的行,但是對於較大的數據集,如何在沒有無休止地滾動查看哪些行符合我的標准的情況下實現這一點?
假數據:
df1 <- data.frame(year = rep(c(2019, 2020), each = 10),
month = rep(c("March", "October"), each = 1),
site = rep(c("1", "2", "3", "4", "5"), each = 2),
common_name = rep(c("Tuna", "shark"), each = 1),
num = sample(x = 0:2, size = 20, replace = TRUE))
例如:如何在一行代碼中僅刪除 2019 年 3 月的站點“1”,而不查看它在哪一行?
您可以使用subset()
:
df1 <- data.frame(year = rep(c(2019, 2020), each = 10),
month = rep(c("March", "October"), each = 1),
site = rep(c("1", "2", "3", "4", "5"), each = 2),
common_name = rep(c("Tuna", "shark"), each = 1),
num = sample(x = 0:2, size = 20, replace = TRUE))
subset(df1, !(site == "1" & year == 2019 & month == "March"))
#> year month site common_name num
#> 2 2019 October 1 shark 0
#> 3 2019 March 2 Tuna 1
#> 4 2019 October 2 shark 0
#> 5 2019 March 3 Tuna 0
#> 6 2019 October 3 shark 0
#> 7 2019 March 4 Tuna 2
#> 8 2019 October 4 shark 2
#> 9 2019 March 5 Tuna 0
#> 10 2019 October 5 shark 2
#> 11 2020 March 1 Tuna 1
#> 12 2020 October 1 shark 1
#> 13 2020 March 2 Tuna 2
#> 14 2020 October 2 shark 2
#> 15 2020 March 3 Tuna 1
#> 16 2020 October 3 shark 0
#> 17 2020 March 4 Tuna 1
#> 18 2020 October 4 shark 0
#> 19 2020 March 5 Tuna 0
#> 20 2020 October 5 shark 2
由reprex 包於 2022-05-31 創建 (v2.0.1)
我們也可以使用paste
subset(df1, paste(year, month, site) != '2019 March 1')
-輸出
year month site common_name num
2 2019 October 1 shark 1
3 2019 March 2 Tuna 1
4 2019 October 2 shark 2
5 2019 March 3 Tuna 0
6 2019 October 3 shark 0
7 2019 March 4 Tuna 2
8 2019 October 4 shark 1
9 2019 March 5 Tuna 1
10 2019 October 5 shark 1
11 2020 March 1 Tuna 1
12 2020 October 1 shark 1
13 2020 March 2 Tuna 1
14 2020 October 2 shark 2
15 2020 March 3 Tuna 1
16 2020 October 3 shark 0
17 2020 March 4 Tuna 1
18 2020 October 4 shark 1
19 2020 March 5 Tuna 1
20 2020 October 5 shark 2
使用 R 括號表示法替代subset
或dplyr:filter
的一行:
df2 <- df1[!(df1$site=="1" & df1$year==2019 & df1$month=="March"),]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.