我有一个大约有 20 000 行和 215 列的数据框,需要搜索,其中出现了某些关键字(如果存在)。
有很多关于指定列中部分匹配的建议,例如
唉,这些功能似乎都不允许搜索所有列。一种选择当然是编写几个嵌套循环。
但是,我想知道是否有更有效的方法 == 已经存在的函数来搜索 a) 数据框的所有列(或:列表中的所有列表)?b)并且可能不只搜索一个短语,而是搜索关键字列表?
例如
# some data
Species <- c("Acanthurus dussumieri", "Callionymus maculatus", "Eviota prasina", "Gymnogobius urotaenia", "Kyphosus bigibbus")
Column1 <- c(60.1, 106, 78.6, 21.5, 71)
ColumnEgg <- c(11.2, 14.5, 12, 8, NA)
Add_Info <- c("Spawns when water temperatures reach above 15°C.", NA, "females deposit eggs of 1.5 mm diameter on plants. Larvae hatch after 3-13 days.", NA, "55 cm TL newborn weighs 380 g")
df <- data.frame(Species, Column1, ColumnEgg, Add_Info)
df
现在很容易搜索,如果知道在哪一列中查找模式,例如
library(stringr)
library(dplyr)
df%>%
filter(str_detect(Species,"Aaptosyax"))
但是:如何在所有 column 中搜索短语或关键字列表,例如
df%>%
filter(str_detect(df[1:4],"Aaptosyax"))
或者
keywords <- c("Aaptosyax", "egg")
df%>%
filter(str_detect(df[1:4],keywords))
非常感谢您的帮助!