gpt4 book ai didi

R:数据框或列表列表中的部分(或完全)匹配

转载 作者:行者123 更新时间:2023-12-05 08:46:48 24 4
gpt4 key购买 nike

我有一个包含大约 20 000 行和 215 列的数据框,需要搜索某些关键字出现在哪些列中(如果它们存在)。

在指定列中有很多部分匹配的建议,例如

Selecting data frame rows based on partial string match in a column

唉,这些函数似乎都不允许搜索所有列。一种选择当然是编写多个嵌套循环。

但是,我想知道是否有更有效的方法 == 已经存在的搜索功能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"))

但是:如何在所有列中搜索一个短语或关键字列表,例如

df%>%
filter(str_detect(df[1:4],"Aaptosyax"))

keywords <- c("Aaptosyax", "egg")
df%>%
filter(str_detect(df[1:4],keywords))

非常感谢您的帮助!

最佳答案

使用 subset + grepl + rowSums 的基本 R 选项

subset(
df,
rowSums(sapply(df, grepl, pattern = "Aaptosyax")) > 0
)

关于R:数据框或列表列表中的部分(或完全)匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68994905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com