разделение строки в столбце и добавление повторяющихся строк в R - PullRequest
0 голосов
/ 01 ноября 2018

Предположим, у меня есть следующий фрейм данных, называемый 'example':

a <- c("rs123|rs246|rs689653", "rs9753", "rs00334")
b <- c(1,2,9)
c <- c(234534523, 67345634, 536423)

example <- data.frame(a,b,c)

Я хочу, чтобы датафрейм выглядел так:

                a b         c
            rs123 1 234534523
            rs246 1 234534523
         rs689653 1 234534523
           rs9753 2  67345634
          rs00334 9    536423

Где, если мы разделим столбец a по разделителю |, остальные столбцы будут дублированы. Любая помощь будет принята с благодарностью !!

1 Ответ

0 голосов
/ 01 ноября 2018

Мы можем использовать separate_rows из пакета tidyr (часть пакета tidyverse).

library(tidyverse)

example2 <- example %>%
  separate_rows(a)
example2
#          a b         c
# 1    rs123 1 234534523
# 2    rs246 1 234534523
# 3 rs689653 1 234534523
# 4   rs9753 2  67345634
# 5  rs00334 9    536423

Вот один из способов конвертировать example2 обратно в исходный формат.

example3 <- example2 %>%
  group_by(b, c) %>%
  summarize(a = str_c(a, collapse = "|")) %>%
  ungroup() %>%
  select(names(example2)) %>%
  mutate(a = factor(a)) %>%
  as.data.frame()

identical(example, example3)
# [1] TRUE
...