gpt4 book ai didi

regex - 在 R 中按模式计算单词的出现次数

转载 作者:行者123 更新时间:2023-12-04 13:50:05 25 4
gpt4 key购买 nike

也许是一个经常被问到的问题,我真的被困在这里了。

我试图从一个 XML 文件中搜索所有出现的地方、它们的行以及每个 12 个字符的字符串出现的总次数,其中仅包含字母和数字(字面意思是字母数字)。

例如:如果我的文件是 xmlInput,我正在尝试搜索并提取一个 12 字符字母数字字符串的所有出现次数、位置和总计数。

示例输出:

  String        Total Count     Line-Num
CPXY180D2324 2 132,846
CPXY180D2131 1 372
CPCY180D2139 1 133

我知道,我可以使用 regmatches 按模式获取所有出现的字符串。为此,我一直在使用以下内容:(感谢您的帮助)。

ProNum12<-regmatches(xmlInput, regexpr("([A-Z0-9]{12})", xmlInput))
ProNum12

regmatches 给我所有符合该模式的匹配项。但它没有给我图案出现位置的行号。 grep 给我所有出现的行号。

我以为我可以使用 Tau 库的 textcnt 包,但无法让它正确运行。也许它不是正确的包?

R 中是否有一个包/库可以搜索所有与模式匹配的单词并返回出现的总次数和每次出现的行数?如果不存在这样的包,知道如何使用上述任何一种或更好的方法来做到这一点吗?

最佳答案

在没有看到您的数据的情况下,很难就如何进行提供建议。下面是一个包含一些纯字符串的示例,可以帮助您开始寻找自己的解决方案。

首先,一些示例数据(可能看起来与您的数据完全不同):

x <- c("Some text with a strange CPXY180D2324 string stuck in it.", 
"Some more text with CPXY180D2131 strange strings CPCY180D2139 stuck in it.",
"Even more text with strings that CPXY180D2131 don't make much sense.",
"I'm CPXY180D2324 tired CPXY180D2324 of CPXY180D2324 text with CPXY180D2131 strange strings CPCY180D2139 stuck in it.")

我们可以用空格分割它。这是另一个可能不适合您的实际问题的领域,但同样,这只是为了帮助您入门(或帮助其他人提供更好的答案,视情况而定。)

x2 <- strsplit(x, " ")

在拆分数据中搜索与您的正则表达式模式匹配的值。创建一个包含行号和匹配字符串的 data.frame

temp <- do.call(rbind, lapply(seq_along(x2), function(y) { 
data.frame(line = y,
value = grep("([A-Z0-9]{12})", x2[[y]],
value = TRUE))
}))
temp
# line value
# 1 1 CPXY180D2324
# 2 2 CPXY180D2131
# 3 2 CPCY180D2139
# 4 3 CPXY180D2131
# 5 4 CPXY180D2324
# 6 4 CPXY180D2324
# 7 4 CPXY180D2324
# 8 4 CPXY180D2131
# 9 4 CPCY180D2139

创建包含行号和计数的 data.frame

with(temp, data.frame(
lines = tapply(line, value, paste, collapse = ", "),
count = tapply(line, value, length)))
# lines count
# CPXY180D2324 1, 4, 4, 4 4
# CPCY180D2139 2, 4 2
# CPXY180D2131 2, 3, 4 3

无论如何,这纯粹是一个猜测(和我打发时间......)

关于regex - 在 R 中按模式计算单词的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17698482/

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