gpt4 book ai didi

r - 在一个字符串向量中搜索另一个字符串向量中某个字符串的所有实例

转载 作者:行者123 更新时间:2023-12-02 02:33:30 30 4
gpt4 key购买 nike

我在小标题中有一些数据,其中包含数字列和相关的感知。我还有一个由大约 450 个较短字符串组成的向量,我想检查每个感知。最终,我想知道与大约 450 个字符串中的每个字符串关联的数字条目的总和值(在根据命中数按比例分配每个句子之后 - 例如,如果其中一个句子与数字值 3 相关联,并且从 450 个字符串中有两次命中,我想为每个计数添加 1.5,请参见示例 1 和 2,它们都出现在第一个“sentience”字符串中)

下面的示例获取了我想要的 4 个示例字符串的“final_result”,但对于大约 450 个字符串来说并不实用。 (我并不是特别热衷于构建一个包含 2 + ~450 列的大型表来执行此操作,因此如果可以通过搜索匹配项的单个列表返回或任何其他方式来完成此操作,那就很好。)

有人可以建议一种更具可扩展性和适当的方法来达到相同的基本输出吗?

非常感谢。

##Tibble with some strings and associated numbers
pacman::p_load(stringi, tidyverse)
set.seed(1)
entries <- tibble("numbers" = rnorm(100),
"strings" = stri_rand_strings(100, 15, "[A-Za-z]"))

#Strings known to show up for example
strings_to_find <- c("NJad", "GNl", "Qaw", "bQ")

#Answers in the form of a table
answers_as_table <- entries %>%
mutate(String1 = str_detect(entries$strings, pattern = strings_to_find[[1]]),
String2 = str_detect(entries$strings, pattern = strings_to_find[[2]]),
String3 = str_detect(entries$strings, pattern = strings_to_find[[3]]),
String4 = str_detect(entries$strings, pattern = strings_to_find[[4]]))

#Find the number of strings in each entry
answers_as_table$CountofHits <- rowSums(answers_as_table[,3:6])
#prorate accordingly
answers_as_table$proration <- answers_as_table$numbers / answers_as_table$CountofHits

#Find the sum of the prorated amount
SumString1 <- sum(answers_as_table[answers_as_table$String1,8])
SumString2 <- sum(answers_as_table[answers_as_table$String2,8])
SumString3 <- sum(answers_as_table[answers_as_table$String3,8])
SumString4 <- sum(answers_as_table[answers_as_table$String4,8])


(final_product <- tibble("strings_to_find" = strings_to_find,
"Sums" = c(SumString1, SumString2, SumString3, SumString4)))```

最佳答案

基础 R 咯咯笑的尝试:

g <- stack(sapply(strings_to_find, grep, x=entries$strings, simplify=FALSE))
g$numbers <- entries$numbers[g$values]
g$prorata <- ave(g$numbers, g$values, FUN=function(x) x/length(x))
out <- aggregate(prorata ~ ind, data=g, sum)
out

# ind prorata
#1 NJad -0.3132269
#2 GNl -0.3132269
#3 Qaw 0.1836433
#4 bQ 0.3575099

比较好:

out == final_product
# ind prorata
#[1,] TRUE TRUE
#[2,] TRUE TRUE
#[3,] TRUE TRUE
#[4,] TRUE TRUE

关于r - 在一个字符串向量中搜索另一个字符串向量中某个字符串的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64687528/

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