Я получаю разные результаты с uniq в BASH по сравнению с unique в R. Мой df выглядит так (более 9 тысяч строк):
samples read_seq ccd_x29 GCATTGGT ccd_x29 GCATTGGT ccd_x29 GCATTGGT ccd_x20 GCCCGGCTAG ccd_x19 GCATTGGTGGTT ccd_x19 GCATTGGTGGTT
После bash uniq Я получаю 8811 строк и с df <- unique(df) я получаю 8803 строки.
uniq
df <- unique(df)
Что вызывает это?
Если нас интересует исключение только предыдущего повторяющегося элемента, возможен вариант rleid из data.table
rleid
data.table
library(data.table) library(dplyr) df %>% mutate(new = rleid(samples, read_seq)) %>% distinct(new, .keep_all = TRUE) %>% select(-new)
Из документов R :
Обратите внимание, что, в отличие от команды Unix uniq, здесь отсутствуют дублированные, а не только повторяющиеся элементы / строки. То есть элемент опускается, если он равен любому предыдущему элементу, а не только если он равен непосредственно предыдущему. (Для последнего см. rle).
rle