Я хотел бы создать столбец, который сообщит мне, сидят ли группы рядом друг с другом.
Для визуализации мой идеальный результат был бы:
Я пробовал использовать cumsum() и ave(), вдохновленный другими ответами, но, похоже, не могу заставить его делать то, что мне нужно.
В данных вашего примера вы можете узнать, являются ли буквы в seat
последовательными, match
приведя их к присущим LETTERS
значениям, а затем используя all(diff(...) == 1)
, чтобы проверить, являются ли они последовательными. Используя dplyr::mutate
:
library(dplyr)
xx %>%
mutate(new = all(diff(match(seat, LETTERS)) == 1),
.by = group)
Выход:
# group seat consecutive new
#1 1 A Y TRUE
#2 1 B Y TRUE
#3 1 C Y TRUE
#4 2 B N FALSE
#5 2 E N FALSE
Здесь я оставил это как логическое значение, но могу добавить ifelse
, чтобы преобразовать его в Да/Нет.
Данные
xx <- read.table(text = "group seat consecutive
1 A Y
1 B Y
1 C Y
2 B N
2 E N", h = TRUE)