ฉันมี 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