df是一個測驗資料框,其中我只想保留包含列中|字符Hits的行和包含命中(即 Hit1、Hit2 等)的行以及Hits列中的空白單元格。
df <- data.frame(
Hits = c("# test114", "# ID|987129470", "# 13135", "Hit1", "", "Hit2", "Hit3", "", "# test739", "# ID|6971324987", "# 83771", "Hit1", "Hit2", "", "Hit3"),
Category1 = c(NA, NA, NA, 0.001, 0.001, 0.002, 0.003, 0.003, NA, NA, NA, 0.023, 0.341, 0.341, 0.569),
Category2 = c(NA, NA, NA, 100, 100, 99, 98, 98, NA, NA, NA, 100, 95, 95, 97),
Category3 = c(NA, NA, NA, 100, 100, 99, 98, 98, NA, NA, NA, 98, 97, 97, 92)
)
df 看起來像這樣

輸出應該是這樣的

由于我只想保留具有|字符的行和不具有#字符和空白單元格的行,因此模式匹配可能會有所幫助。但我似乎無法弄清楚如何在代碼中實作它。有什么建議?
請注意,在原始資料框中,命中可以有不同的名稱。有些熱門歌曲不以“Hit”一詞開頭
uj5u.com熱心網友回復:
我們可以使用grep正則運算式模式 - "^[^#] $|\\|(命中列沒有#從開始 ( ^) 到結束 ( $) 或 ( |)|字符 - 轉義,因為它是元字符)
subset(df, grepl("^[^#] $|\\|", Hits)|Hits == "")
Hits Category1 Category2 Category3
2 # ID|987129470 NA NA NA
4 Hit1 0.001 100 100
5 0.001 100 100
6 Hit2 0.002 99 99
7 Hit3 0.003 98 98
8 0.003 98 98
10 # ID|6971324987 NA NA NA
12 Hit1 0.023 100 98
13 Hit2 0.341 95 97
14 0.341 95 97
15 Hit3 0.569 97 92
或者單獨做這個 grepl
> subset(df, grepl("^$|^[^#] $|\\|", Hits))
Hits Category1 Category2 Category3
2 # ID|987129470 NA NA NA
4 Hit1 0.001 100 100
5 0.001 100 100
6 Hit2 0.002 99 99
7 Hit3 0.003 98 98
8 0.003 98 98
10 # ID|6971324987 NA NA NA
12 Hit1 0.023 100 98
13 Hit2 0.341 95 97
14 0.341 95 97
15 Hit3 0.569 97 92
或在 dplyr
library(dplyr)
library(stringr)
df %>%
filter(str_detect(Hits, "^[^#] $|\\|")|Hits == "")
Hits Category1 Category2 Category3
1 # ID|987129470 NA NA NA
2 Hit1 0.001 100 100
3 0.001 100 100
4 Hit2 0.002 99 99
5 Hit3 0.003 98 98
6 0.003 98 98
7 # ID|6971324987 NA NA NA
8 Hit1 0.023 100 98
9 Hit2 0.341 95 97
10 0.341 95 97
11 Hit3 0.569 97 92
uj5u.com熱心網友回復:
類似于 akruns 解決方案,但不使用正則運算式解決方案:
library(dplyr)
library(stringr)
df %>%
filter(str_detect(Hits, 'ID|Hit'))
Hits Category1 Category2 Category3
1 # ID|987129470 NA NA NA
2 Hit1 0.001 100 100
3 Hit1 0.001 100 100
4 Hit2 0.002 99 99
5 Hit3 0.003 98 98
6 Hit3 0.003 98 98
7 # ID|6971324987 NA NA NA
8 Hit1 0.023 100 98
9 Hit2 0.341 95 97
10 Hit2 0.341 95 97
11 Hit3 0.569 97 92
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402555.html
標籤:
