Сортировка и сохранение отдельных повторяющихся строк в R

#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 (идентификатор), поскольку идентификаторы также повторяются. Спасибо