Количество раз, которое определенное значение следует за другим конкретным значением для каждого столбца в кадре данных - PullRequest
0 голосов
/ 30 мая 2019

Я хотел бы создать таблицу или новый фрейм данных, который отображает для каждой строки исходного фрейма данных, сколько раз определенное значение предшествует другому конкретному значению. Например, если у меня есть следующий фрейм данных:

x <- data.frame("Red" = c("a", "b", "a", "a", "c", "d"), "Blue" = c("b", "a", "b", "a", "b", "a"), "Green" = c("a", "a", "b", "a", "b", "a"))

и я хочу знать, для каждого цвета (красный, синий и зеленый), сколько раз встречается последовательность «b», «a» (т. Е. Сколько раз b предшествует a в последовательности).

Правильный ответ будет выглядеть примерно так:

     Color ba
1   Red  1
2  Blue  3
3 Green  2

1 Ответ

1 голос
/ 30 мая 2019

вот одно решение с использованием stringr

library(stringr)

count_pair <- function(x, pattern) {
   p <- paste(pattern, collapse = "")
   s <- paste(x, collapse = "")
   str_count(s, pattern = p)
}

z <- apply(x, 2, count_pair, pattern = c("b", "a"))
# Red  Blue Green 
# 1     3     2 

# if you want the output in form of a data.frame you could run:
df <- as.data.frame(as.table(z))

#    Var1 Freq
# 1   Red    1
# 2  Blue    3
# 3 Green    2
...