Как удалить последовательные повторяющиеся символы - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в R и не имею опыта программирования. Моя проблема в том, что у меня есть такие данные: enter image description here

В столбце «путь» я хочу удалить все последовательные дубликаты, такие как красные в рамке на изображении выше. Например: Органический> Платный поиск> Платный поиск> Платный поиск> Прямой> Прямой> Органический должен стать: Органический> Платный поиск> Прямой> Органический

Спасибоза вашу поддержку.

1 Ответ

0 голосов
/ 25 октября 2019

Вот вариант, основанный на strsplit и rle:

x <- c("Organic > Paid Search > Paid Search > Paid Search > Direct > Direct > Organic")
x <- trimws(strsplit(x, ">")[[1]], "both")
paste(rle(x)$values, collapse = " > ")
# output
[1] "Organic > Paid Search > Direct > Organic"

Используя data.frame, попробуйте:

df <- data.frame(Path = c("Organic > Paid Search > Paid Search > Paid Search > Direct > Direct > Organic",
                          "Organic > Paid Search >  Paid Search > Direct > Organic > Direct",
                          "Organic > Organic > Paid Search > Paid Search > Direct > Direct"),
                 conversions = c(6, 5, 3), stringsAsFactors = F)
# Solution
df$Path2 <- sapply(strsplit(df$Path, ">"),
                   function(x) paste(rle(trimws(strsplit(x, ">"), "both"))$values,
                                     collapse = " > "))
df # output
                                                                           Path conversions                                             Path2
1 Organic > Paid Search > Paid Search > Paid Search > Direct > Direct > Organic           6          Organic > Paid Search > Direct > Organic
2              Organic > Paid Search >  Paid Search > Direct > Organic > Direct           5 Organic > Paid Search > Direct > Organic > Direct
3               Organic > Organic > Paid Search > Paid Search > Direct > Direct           3                    Organic > Paid Search > Direct

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...