отдельные столбцы из фрейма данных - PullRequest
0 голосов
/ 29 августа 2018

У меня есть фрейм данных в результате извлечения данных из текстовых файлов, в которых есть несколько столбцов, которые содержат больше значения

Я хочу разбить столбцы с более чем значением на 2 столбца, как это

Я попробовал этот код, но он выдает ошибку

db<-separate_rows(db,TYPE,CHRO,EX ,sep=",\\s+")
Error: All nested columns must have the same number of elements.

1 Ответ

0 голосов
/ 29 августа 2018

Обратите внимание, что данные выборки и ожидаемый результат не совпадают; например, в ваших примерах данных нет записи CHRO=c700. Вы также, кажется, пропускаете строки. Пожалуйста, проверьте ваши входные / ожидаемые выходные данные.

Вы можете использовать tidyr::separate_rows, например,

df %>%
    separate_rows(TYPE, sep = ",") %>%
    separate_rows(CHRO, sep = ",") %>%
    separate_rows(EX, sep = ",")
#    TYPE       CHRO     EX
#1       multiple   c.211dup   <NA>
#2       multiple  c.3751dup   <NA>
#3       multiple       <NA> exon.2
#4       multiple       <NA> exon.3
#5       multiple       <NA> exon.7
#6   mitocondrial       <NA> exon.3
#7   mitocondrial       <NA> exon.7
#8 multifactorial       <NA>   <NA>

Или, возможно, использовать splitstackshape

library(splitstackshape)
df %>%
    cSplit(names(df), direction = "long") %>%
    fill(TYPE) %>%
    group_by_at(names(df)) %>%
    slice(1)
#  TYPE           CHRO      EX
#  <fct>          <fct>     <fct>
#1 mitocondrial   NA        exon.7
#2 multifactorial NA        NA
#3 multiple       c.211dup  NA
#4 multiple       c.3751dup NA
#5 multiple       NA        exon.2
#6 multiple       NA        exon.3
#7 multiple       NA        NA

Обратите внимание, что результаты отличаются, потому что порядок разделения столбцов имеет значение.


Пример данных

df <- read.table(text =
    "TYPE                   CHRO                       EX
        multiple    'c.211dup, c.3751dup'                       NA
        multiple                     NA                   exon.2
        multiple,mitocondrial        NA                   exon.3,exon.7
  multifactorial                     NA                       NA", header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...