Разобрать файл в R - PullRequest
       1

Разобрать файл в R

0 голосов
/ 24 октября 2018

Мне нужно проанализировать файл в R, который выглядит следующим образом:

Acc1    "product"="A","product"="B","product"="C"
Acc2    "product"="C","product"="D"

Выше находится текстовый файл, и есть вкладка между Acc1 и "product".

Вывод долженвыглядеть:

Column1 Column2
Acc1    A
Acc1    B
Acc1    C
Acc2    C
Acc2    D

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 24 октября 2018

Я собираюсь предложить вам взглянуть на решение Tidyverse для этого.Конечно, его можно обрабатывать с помощью base-R и data.table (как другие могут предложить в комментариях или ответах), но это хорошее начало.

Во-первых, подделка данных.

txt <- readLines(textConnection('Acc1    "product"="A A","product"="B","product"="C"
Acc2    "product"="C","product"="D"'))

В вашем случае вы, вероятно, просто сделаете readLines(filename).

Этот следующий блок отделяет материал "Acc" от остальных.

txtsplit <- strsplit(gsub("^(\\S+)\\s+", "\\1|", txt), "\\|")

И, наконец, остальныеобработка.

library(dplyr)
library(tidyr)
data_frame(
  Col1 = sapply(txtsplit, `[[`, 1),
  Col2 = sapply(txtsplit, `[[`, 2)
) %>%
  mutate(
    Col2 = gsub('"product"=', '', Col2),
    Col2 = strsplit(Col2, ",")
  ) %>%
  unnest() %>%
  mutate(
    Col2 = gsub('"', '', Col2)
  )
# # A tibble: 5 x 2
#   Col1  Col2 
#   <chr> <chr>
# 1 Acc1  A A
# 2 Acc1  B    
# 3 Acc1  C    
# 4 Acc2  C    
# 5 Acc2  D    

Существует несколько хороших руководств по использованию dplyr и tidyr, быстрый поиск найдет лучше / новее, чем я могу опубликовать здесь.

Кстати: яраздельное удаление кавычек в отдельный mutate, но это можно было легко обработать в начальном gsub.Я решил оставить его отдельно, если в кавычках было больше, чем просто буквы, где их удаление может позже вызвать проблемы с синтаксическим анализом.

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