Chciałbym określić, czy kolumna napisów w poniższej ramce danych powtarza litery "V" lub "G" co najmniej 5 razy w ciągu pierwszych 20 znaków strunowy.Identyfikuje ciągłe występowanie określonych liter w ciągu znaków, używając R
dane próbki:
data = data.frame(class = c('a','b','C'), string =
c("ASADSASAVVVVGVGGGSDASSSDDDFGDFGHFGHFGGGGGDDFFDDFGDFGTYJ",
"AWEERTGVTHRGEFGDFSDFSGGGGGGDAWSDFAASDADAADWERWEQWD",
"GRTVVGGVVVGGSWERGERVGEGDDFASDGGVQWEQWEQWERERYRYER"))
Na przykład ciąg w pierwszym rzędzie ma „VVVVG” w ciągu pierwszych 20 pozycji znakowych. Podobnie łańcuch w trzecim rzędzie ma "VVGGV".
data
# class string
#1 a ASADSASAVVVVGVGGGSDASSSDDDFGDFGHFGHFGGGGGDDFFDDFGDFGTYJ
#2 b AWEERTGVTHRGEFGDFSDFSGGGGGGDAWSDFAASDADAADWERWEQWD
#3 C GRTVVGGVVVGGSWERGERVGEGDDFASDGGVQWEQWEQWERERYRYER
pożądany wynik powinien wyglądać następująco:
# class string result
# 1 a ASADSASAVVVVGVGGGSDASSSDDDFGDFGHFGHFGGGGGDDFFDDFGDFGTYJ TRUE
# 2 b AWEERTGVTHRGEFGDFSDFSGGGGGGDAWSDFAASDADAADWERWEQWD FALSE
# 3 C GRTVVGGVVVGGSWERGERVGEGDDFASDGGVQWEQWEQWERERYRYER TRUE
Może 'danych $ result <- Grepl ('(V | G) {5}', substr ($ string dane, 1,20))' – akrun
Dzięki @akrun to działa dobrze –
Co jeśli jest tylko "VVVVV", a nie "G" w pierwszych 20 znakach – akrun