Цель
У меня есть столбец «Состояние», который содержит разные символы. Один из персонажей - «Следующий». Я хочу обозначить 1-ю последовательность (последовательные значения) «Следующий» как «1-й», второй - «2-й» и т. Д. Ниже приведен пример данных:Как сгруппировать последовательность значений в столбце в r?
ДАТа
> dput(foo)
structure(list(Vehicle.ID2 = c("3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588"), Frame.ID = 2110:2146,
State = c("Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Approaching-fastveh",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh"
)), .Names = c("Vehicle.ID2", "Frame.ID", "State"), class = c("tbl_df",
"data.frame"), row.names = c(NA, -37L))
Желаемая выход
structure(list(Vehicle.ID2 = c("3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588", "3361-588", "3361-588",
"3361-588", "3361-588", "3361-588", "3361-588"), Frame.ID = 2110:2146,
State = c("Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Following", "Following",
"Following", "Following", "Following", "Approaching-fastveh",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh",
"Approaching-fastveh", "Approaching-fastveh", "Approaching-fastveh"
), grp = c("1st", "1st", "1st", "1st", "1st", "1st", "1st",
"1st", "1st", ".", ".", ".", "2nd", "2nd", "2nd", "2nd",
"2nd", "2nd", "2nd", "2nd", "2nd", "2nd", "2nd", "2nd", "2nd",
"2nd", "2nd", "2nd", "2nd", "2nd", ".", ".", ".", ".", ".",
".", ".")), .Names = c("Vehicle.ID2", "Frame.ID", "State",
"grp"), row.names = c(NA, -37L), class = c("tbl_df", "data.frame"
))
То, что я пытался
Я попытался с помощью rle
, но она может рассчитывать только уникальные значения. Пожалуйста, помогите мне, как я могу решить эту проблему. Обратите внимание, что в исходных данных у меня есть несколько Vehicle.ID2
, поэтому я предпочитаю использовать dplyr
.
Спасибо! Это быстро! Не знал об этом использовании 'inverse.rle' –