Невозможно получить текстовые данные во фрейм данных после очистки в R - PullRequest
0 голосов
/ 20 сентября 2019

Мне известно, что подобные вопросы здесь задавались, но я все еще считаю, что моя задача более сложная.Я прочитал файл CSV с 3 текстовыми столбцами в кадре данных.Я использовал tm пакет для очистки текстовых данных.Я использовал следующий код:

con_corpus <- Corpus(VectorSource(my_con$Verba)) 
corpus_clean <- tm_map(con_corpus, tolower)
corpus_clean <- tm_map(corpus_clean, removeNumbers)
corpus_clean <- tm_map(corpus_clean, removeWords, stopwords('english'))
corpus_clean <- tm_map(corpus_clean, removePunctuation)
corpus_clean <- tm_map(corpus_clean, stripWhitespace)
corpus_clean <- tm_map(corpus_clean, trim)

Теперь я волнуюсь о том, как очистить данные во всех 3 клоунах одновременно.Во-вторых, как преобразовать эти корпусные данные в фрейм данных, чтобы я мог видеть, все ли данные, которые я импортировал в R, были успешно очищены.

1 Ответ

0 голосов
/ 20 сентября 2019

Я бы собрал весь текст в один столбец, прежде чем начать его чистить:

некоторые примеры данных

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

library(tm)
library(stringi)
library(dplyr)
library(tidyr)

my_con <- data.frame(
  col1 = stri_rand_lipsum(nparagraphs = 3, start_lipsum = FALSE),
  col2 = stri_rand_lipsum(nparagraphs = 3, start_lipsum = FALSE),
  col3 = stri_rand_lipsum(nparagraphs = 3, start_lipsum = FALSE),
  stringsAsFactors = FALSE
)

подготовка данных

Два простых преобразования, чтобы получить данные в более удобном формате.Проверьте ?mutate из dplyr и ?pivot_longer из tidyr, если вы не знакомы с командами.

    # add id and use tidyr to get text in one column
my_con_clean <- my_con %>% 
  mutate(id = seq_along(col1)) %>% # add id column to data.frame
  pivot_longer(col1:col3, "column", values_to = "Verba")
my_con_clean
#> # A tibble: 9 x 3
#>      id column Verba                                                       
#>   <int> <chr>  <chr>                                                       
#> 1     1 col1   Praesent dignissim fames lectus nec enim lacus sem aenean t…
#> 2     1 col2   Cubilia per fringilla. At ante, vulputate et morbi, tortor.…
#> 3     1 col3   Nisi duis gravida egestas ipsum maximus metus. Eget eget pr…
#> 4     2 col1   Elit purus suspendisse scelerisque diam sapien, nullam, int…
#> 5     2 col2   Purus nunc sit et, tortor a. Porttitor maecenas libero viva…
#> 6     2 col3   Urna sed amet elementum faucibus himenaeos urna elit at et.…
#> 7     3 col1   Massa ac ligula ut nunc nam tincidunt. Amet in, in proin od…
#> 8     3 col2   Duis volutpat, bibendum. Turpis faucibus vulputate velit ri…
#> 9     3 col3   Sed aenean eu eros arcu parturient vestibulum justo congue …

Теперь вы можете использовать тот же конвейер, что и раньше, но для всего текста

con_corpus <- Corpus(VectorSource(my_con$Verba)) 
corpus_clean <- tm_map(con_corpus, tolower)
corpus_clean <- tm_map(corpus_clean, removeNumbers)
corpus_clean <- tm_map(corpus_clean, removeWords, stopwords('english'))
corpus_clean <- tm_map(corpus_clean, removePunctuation)
corpus_clean <- tm_map(corpus_clean, stripWhitespace)
# corpus_clean <- tm_map(corpus_clean, trim)

Создан в 2019-09-20 пакетом Представить (v0.3.0)

...