GOOGLE ADS

Sonntag, 1. Mai 2022

Wie berechnet man die Anzahl der Vorkommen eines bestimmten Zeichens in jeder Zeile einer Spalte von Zeichenfolgen?

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_countFunktion, 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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...