Ich habe einen data.frame, in dem bestimmte Variablen eine Textzeichenfolge enthalten. Ich möchte die Anzahl der Vorkommen eines bestimmten Zeichens in jeder einzelnen Zeichenfolge zählen.
Beispiel:
q.data<-data.frame(number=1:3, string=c("greatgreat", "magic", "not"))
Ich möchte eine neue Spalte für q.data mit der Anzahl des Vorkommens von "a" in der Zeichenfolge erstellen (dh c (2,1,0)).
Der einzige komplizierte Ansatz, den ich geschafft habe, ist:
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
Lösung des Problems
Das Stringr-Paket bietet die str_count
Funktion, die das zu tun scheint, woran Sie interessiert sind
# 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
Keine Kommentare:
Kommentar veröffentlichen