gpt4 book ai didi

r - 使用 grep 确定字符串的频率

转载 作者:行者123 更新时间:2023-12-02 05:52:45 27 4
gpt4 key购买 nike

如果我有一个向量

x <- c("ajjss","acdjfkj","auyjyjjksjj")

然后做:

y <- x[grep("jj",x)]
table(y)

我得到:

y
ajjss auyjyjjksjj
1 1

但是,第二个字符串“auyjyjjksjj”应该将子字符串“jj”计算两次。如何将其从真/假计算更改为实际计算“jj”的频率?

此外,如果可以计算每个字符串的子字符串频率除以字符串长度,那就太好了。

提前致谢。

最佳答案

我使用 gregexpr() 解决了这个问题

x <- c("ajjss","acdjfkj","auyjyjjksjj")
freq <- sapply(gregexpr("jj",x),function(x)if(x[[1]]!=-1) length(x) else 0)
df<-data.frame(x,freq)

df
# x freq
#1 ajjss 1
#2 acdjfkj 0
#3 auyjyjjksjj 2

对于问题的最后一部分,计算频率/字符串长度...

df$rate <- df$freq / nchar(as.character(df$x))

有必要将 df$x 转换回字符串,因为 data.frame(x,freq) 会自动将字符串转换为因子,除非您指定 stringsAsFactors=F。

df
# x freq rate
#1 ajjss 1 0.2000000
#2 acdjfkj 0 0.0000000
#3 auyjyjjksjj 2 0.1818182

关于r - 使用 grep 确定字符串的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600760/

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