1. ホーム
  2. regex

[解決済み] 文字列の各列に指定された文字が出現する回数を計算するには?

2022-07-27 16:51:43

質問

ある変数がテキスト文字列を含むdata.frameを持っています。 私は、各個別の文字列内の与えられた文字の出現回数をカウントしたいと思います。

q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"))

q.dataに、文字列中の"a"の出現回数(例:c(2,1,0))を表す新しい列を作成したいのですが、可能でしょうか?

私が管理した唯一の複雑なアプローチは、です。

string.counter<-function(strings, pattern){  
  counts<-NULL
  for(i in 1:length(strings)){
    counts[i]<-length(attr(gregexpr(pattern,strings[i])[[1]], "match.length")[attr(gregexpr(pattern,strings[i])[[1]], "match.length")>0])
  }
return(counts)
}

string.counter(strings=q.data$string, pattern="a")

 number     string number.of.a
1      1 greatgreat           2
2      2      magic           1
3      3        not           0

どのように解決するのですか?

stringrパッケージは str_count 関数があり、これはあなたが興味を持っていることを行うようです。

# Load your example data
q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"), stringsAsFactors = F)
library(stringr)

# Count the number of 'a's in each element of string
q.data$number.of.a <- str_count(q.data$string, "a")
q.data
#  number     string number.of.a
#1      1 greatgreat           2
#2      2      magic           1
#3      3        not           0