2016-05-05 16 views
0

Ich habe einen Datenrahmen wie dieseZählmuster, basierend auf Wildcard in R-Datenrahmen

Type cat1 
A NA 
B NA 
C NA 
D Huvec,2_Weak_Promoter;NHLF,2_Weak_Promoter;NHEK,3_Poised_Promoter 
E Huvec,2_Weak_Promoter;NHLF,2_Weak_Promoter 
F HepG2,2_Weak_Promoter 
G SK.MUS62,6_TssD2 

Und ich würde die Anzahl der Male das folgende Muster in jeder Reihe von column_cat1 wiederholt zählen möchte

Zeichenfolge1, Zeichenfolge2;

und die erwartete Ausgabe ist

Type Count 
A NA 
B NA 
C NA 
D 3 
E 2 
F 1 
G 1 

Ich habe keine Ahnung haben, wie RegexMuster oder str_split in diese verwenden .. kann mir jemand helfen ..

Dank Mur

Antwort

3

Sie stringr Paket und str_count, können

library(stringr) 
str_count(df$cat1, ',') 
#[1] NA NA NA 3 2 1 1 
+0

vielen Dank funktioniert es wie ein Charme – MrMsarguru

+0

@MrMsarguru, kein Problem. Sie können die Antwort akzeptieren, indem Sie das Häkchen markieren. Vielen Dank – Sotos

0

@sotos Antwort ist viel sauberer, aber hier ist eine Basis R Lösung:

cat1 <- c(NA, NA, NA, "Huvec,2_Weak_Promoter;NHLF,2_Weak_Promoter;NHEK,3_Poised_Promoter", 
      "Huvec,2_Weak_Promoter;NHLF,2_Weak_Promoter", "HepG2,2_Weak_Promoter", 
      "SK.MUS62,6_TssD2") 

myCount <- sapply(strsplit(cat1, split=";"), FUN=length) 

Dies beruht auf dem Muster, das jeder Eintrag durch den Semikolon getrennt ist, „;“.