我有一個data.frame,其中某些變量包含文本字符串。我希望計算每個字符串中給定字符的出現(xiàn)次數(shù)。例:q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"))我希望為q.data創(chuàng)建一個新列,其中包含字符串中“a”的出現(xiàn)次數(shù)(即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.a1 1 greatgreat 22 2 magic 13 3 not 0
3 回答

繁華開滿天機
TA貢獻1816條經(jīng)驗 獲得超4個贊
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

哆啦的時光機
TA貢獻1779條經(jīng)驗 獲得超6個贊
如果你不想離開基地R,這里有一個相當(dāng)簡潔和富有表現(xiàn)力的可能性:
x <- q.data$string
lengths(regmatches(x, gregexpr("a", x)))
# [1] 2 1 0
- 3 回答
- 0 關(guān)注
- 1279 瀏覽
添加回答
舉報
0/150
提交
取消