Как убрать лишние | (труба) разделитель строк при загрузке | (труба) -отделенный текст в R - PullRequest
0 голосов
/ 15 ноября 2018

Я читаю текст из файла, в котором текст разделен |(трубы).

Текстовая таблица выглядит следующим образом (идентификатор твита | дата и время | твит):

545253503963516928|Wed Dec 17 16:25:40 +0000 2014|Massachusetts Pharmacy Owners Arrested in Meningitis Deaths http://xxxxxxxxx
545235402156937217|Wed Dec 17 15:13:44 +0000 2014|For First Time, Treatment Helps Patients With Worst Kind of Stroke, Study Says http://xxxxxxxxx

Я читаю эту информацию, используя следующий код:

nyt  <- read.table(file=".../nytimeshealth.txt", 
                                      sep="|", 
                                      header = F, 
                                      quote="", 
                                      fill=T, 
                                      stringsAsFactors = F,
                                      numerals ="no.loss",
                                      encoding = "UTF-8",
                                      na.strings = "NA")

Теперь, хотя большинство строк в исходном файле имеют 3 столбца, каждый из которых разделен знаком «|», у нескольких строк есть дополнительный знак «|»разделитель.То есть у них есть четыре столбца, потому что некоторые из твитов содержат символ |.

545074589374881792|Wed Dec 17 04:34:43 +0000 2014|National Briefing | New England: Massachusetts: Sex-Change Surgery Denied to Inmate http://xxxxxxxxx

Я знаю, что использование опции fill=T в функции read.table выше позволяет мне читать строки неравной длины (пустые поля неявно добавляются в пустые ячейки).

Итак, строка выше становится

71 545074589374881792 Wed Dec 17 04:34:43 +0000 2014 National Briefing
72 New England: Massachusetts: Sex-Change Surgery Denied to Inmate http://xxxxxxxxx

Однако теперь столбец 3 строки 71 содержит неполную информацию, а столбцы 2 и 3 строки 72 пусты, а столбец 1 не содержитидентификатор твита, но часть твита.Есть ли способ, которым я могу избежать этого?Я хотел бы удалить дополнительный разделитель |, где бы он ни появлялся, чтобы не потерять какую-либо информацию.

Возможно ли это при чтении текстового файла в R?Или это то, о чем мне придется позаботиться, прежде чем я начну загружать текст.Какой мой лучший курс действий?

Ответы [ 2 ]

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

Вот еще одно решение, чтобы вернуться к вашему комментарию и использовать ваш исходный код.Но это решение будет работать только в том случае, если у вас есть один | на твит (вы можете иметь твиты без такового, если хотя бы один твит имеет один |).Если в ваших твитах нет |, или если в некоторых твитах содержится более одного |, он сломается, и вам придется его редактировать.Поэтому другой ответ, который будет работать независимо от структуры ваших твитов, лучше IMO.

Я все еще использую мой text.txt файл:

df <- read.table(file = "text.txt", 
                 sep = "|", 
                 header = F, 
                 quote = "", 
                 fill = T, 
                 stringsAsFactors = F,
                 numerals = "no.loss",
                 encoding = "UTF-8",
                 na.strings = "NA")

df %>%
  mutate(V3 = paste0(V3, V4)) %>%
  select(- V4)

Результат

                  V1                             V2
1 545253503963516928 Wed Dec 17 16:25:40 +0000 2014
2 545235402156937217 Wed Dec 17 15:13:44 +0000 2014
3 545074589374881792 Wed Dec 17 04:34:43 +0000 2014
                                                                                                    V3
1 Massachusetts Pharmacy Owners Arrested in Meningitis Deaths http://xxxxxxxxx 
2 For First Time, Treatment Helps Patients With Worst Kind of Stroke, Study Says http://xxxxxxxxx 
3 National Briefing  New England: Massachusetts: Sex-Change Surgery Denied to Inmate http://xxxxxxxxx
0 голосов
/ 15 ноября 2018

Я создал текстовый файл с именем text.txt, содержащий 3 строки, которые вы указываете в качестве примера своих данных (две простые строки без | в твите, а также строку, в которой | находится внутри твита. ).

Вот содержимое этого файла:

545253503963516928|Wed Dec 17 16:25:40 +0000 2014|Massachusetts Pharmacy Owners Arrested in Meningitis Deaths http://xxxxxxxxx
545235402156937217|Wed Dec 17 15:13:44 +0000 2014|For First Time, Treatment Helps Patients With Worst Kind of Stroke, Study Says http://xxxxxxxxx
545074589374881792|Wed Dec 17 04:34:43 +0000 2014|National Briefing | New England: Massachusetts: Sex-Change Surgery Denied to Inmate http://xxxxxxxxx

Код

library(tidyverse)

readLines("text.txt", encoding = "UTF-8") %>%
  map(., str_split_fixed, "\\|", 3) %>%
  map_df(., as_tibble)

Результат

# A tibble: 3 x 3
  V1                 V2                            
  <chr>              <chr>                         
1 545253503963516928 Wed Dec 17 16:25:40 +0000 2014
2 545235402156937217 Wed Dec 17 15:13:44 +0000 2014
3 545074589374881792 Wed Dec 17 04:34:43 +0000 2014
  V3                                                                            
  <chr>                                                                         
1 Massachusetts Pharmacy Owners Arrested in Meningitis Deaths http://xxxxxxxxx  
2 For First Time, Treatment Helps Patients With Worst Kind of Stroke, Study Say…
3 National Briefing | New England: Massachusetts: Sex-Change Surgery Denied to …
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...