Tôi có data.frame trong đó các biến nhất định chứa một chuỗi văn bản. Tôi muốn đếm số lần xuất hiện của một ký tự nhất định trong mỗi chuỗi riêng lẻ.
Thí dụ:
q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"))
Tôi muốn tạo một cột mới cho q.data với số lần xuất hiện của "a" trong chuỗi (tức là. C (2,1,0)).
Cách tiếp cận phức tạp duy nhất mà tôi đã quản lý là:
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