gpt4 book ai didi

r - 计算数据框中变量中多个字母的出现次数?

转载 作者:行者123 更新时间:2023-12-05 09:03:45 26 4
gpt4 key购买 nike

只要说我想计算单词“apple”中“a”和“p”的数量,我可以这样做:

library(stringr)
sum(str_count("apple", c("b", "k")))

但是当我尝试应用这个逻辑来计算数据框中变量中多个不同单词的“a”和“p”的数量时,它不起作用,例如:

dat <- tibble(id = 1:4, word = c(c("apple", "banana", "pear", "pineapple")))
dat <- dat %>% mutate(num_ap = sum(str_count(word, c("a", "p"))))

这是行不通的。我的变量“num_ap”应该读作 c(3, 3, 2, 4) 但它读作 c(5, 5, 5, 5)

有谁知道为什么这对我不起作用?

谢谢!

最佳答案

在这种情况下,它有助于回溯问题。

str_count(dat$word, c("a", "p")) 本身将返回 [1] 1 0 1 3。每个数字代表字母“p”在数据框中每个单词中出现的次数。如果您使用 sum(str_count(dat$word, c("a", "p"))) 对该向量求和,您将得到 [1] 5 .由于您没有逐行进行,因此每行都将分配一个值 5,这与您的结果一致。

要解决此问题,请注意函数 rowwise()(dplyr 库的一部分)允许您单独处理每一行。因此,修改您的代码以合并 rowwise() 函数将解决您的问题:

dat <- dat %>% rowwise() %>% mutate(num_ap = sum(str_count(word, c("a", "p"))))

关于r - 计算数据框中变量中多个字母的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69571451/

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