#r #dplyr
#r #dplyr
Вопрос:
У меня есть фрейм данных с одним столбцом (ИМЕНЕМ), содержащим следующие значения A, A, A, B, C, D, D, D, A, A, A, A, A, A, A, F, F, E, C, B Я хотел бы получить список последовательности этих значений, что означает, что мой результат должен выглядеть как A, B, C, D, AF, E, C, B.
Я попробовал следующий код:
data <- data %>%
group_by(ID) %>%
arrange(TIME) %>%
distinct(NAME)
Однако distinct
позволяет включать одно ИМЯ в список / последовательность только один раз.
Кроме того, попробовал с библиотекой, fastmatch
указав fmatch(NAME, unique(NAME)
, но столкнулся с ошибками.
Спасибо за помощь!
Комментарии:
1. Как выглядят ваши данные? Какова взаимосвязь между идентификатором, ВРЕМЕНЕМ и ИМЕНЕМ? Можете ли вы предоставить набор тестовых данных?
Ответ №1:
Мы можем использовать rleid
from data.table
для создания групп на основе разницы в значении между соседними элементами, а затем slice
первой строки
library(dplyr)
library(data.table)
data %>%
arrange(ID, TIME) %>%
group_by(ID, grp = rleid(NAME)) %>%
slice(1)
данные
data <- data.frame(ID = rep(1:3, each = 5), TIME = Sys.Date() 1:15,
NAME = c("A","A","A","B","C","D","D","A","A","A","F","F","E","C","B"))
Комментарии:
1. Спасибо за помощь, я немного отредактирую фрейм данных, поэтому ответ потребует модификации. Сделает это как можно раньше. Использовался group_by (идентификатор), поскольку идентификаторы также повторяются. Спасибо