Повторяющиеся строки на основе условия разделения - PullRequest
0 голосов
/ 22 января 2020

Я хочу дублировать строки на основе условия разделения, в идеале в SQL или Excel. Есть простой способ сделать это? Ниже приведен пример ожидаемого вывода.

structure(list(key = 1:3, Sales_channel = structure(c(1L, 1L, 
2L), .Label = c("online", "shop"), class = "factor"), Product = structure(3:1, .Label = c("bus & boat", 
"bus & cinema", "bus & zoo"), class = "factor"), quantity = c(1, 
2, 1)), class = "data.frame", row.names = c(NA, -3L))

Я хочу получить следующее:

  key Sales_channel quantity values
1   1        online        1    bus
2   1        online        1    zoo
3   2        online        2    bus
4   2        online        2 cinema
5   3          shop        1   boat
6   3          shop        1    bus

По сути, я хочу разделить каждую строку на «&» , а затем поверните стол.

1 Ответ

0 голосов
/ 22 января 2020

Попробуйте объединить base R с tidyverse.

cbind(dat,t(sapply(str_split(dat$Product, " & "), unlist))) %>% 
gather(newProd, values,`1`,`2`) %>% 
arrange(key, values)

Сначала мы разбиваем строку и получаем ее из формата list в матричный формат и bind по столбцу в исходный данные dat. Затем мы превращаем новые столбцы в 1 длинный столбец и проверяем правильность порядка.

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