Как мне лучше всего продезинфицировать этот стол? - PullRequest
0 голосов
/ 27 марта 2020

Я сделал несколько веб-операций и теперь у меня есть большой фрейм данных с 30 000 значений, которые выглядят следующим образом:

1 | January 16, 2017
2 |        President Obama announces something
3 |        Today President Obama announced that...
4 | January 17, 2017
5 |        Press Briefing January 17th
6 |        In todays briefing, the press secr...

Снимок экрана фрейма данных

Это всегда " Дата »,« Заголовок »и« Содержание ». Я застрял, пытаясь очистить эти данные в течение нескольких часов. Я хотел бы преобразовать текстовую дату в машиночитаемые даты и создать три отдельных столбца, один для даты, один для заголовка и один для текстового содержимого, чтобы все было аккуратно и аккуратно. Какой лучший способ исправить это?

1 Ответ

1 голос
/ 27 марта 2020

В идеале, вы должны это исправить, пока вы сами просматриваете веб-страницы. Однако, если нет способа вернуть go, чтобы исправить это, и, как вы уже упоминали, таблица всегда имеет форму «Дата», «Заголовок» и «Содержимое», мы можем использовать векторную рециркуляцию для выбора строк.

df_out <- data.frame(Date = df$V1[c(TRUE, FALSE, FALSE)], 
                     Title = df$V1[c(FALSE, TRUE, FALSE)], 
                     Content = df$V1[c(FALSE, FALSE, TRUE)], 
                      stringsAsFactors = FALSE)
df_out
#               Date                                       Title                                      Content
#1  January 16, 2017         President Obama announces something         Today President Obama announced that
#2  January 17, 2017                 Press Briefing January 17th           In todays briefing, the press secr

Другой вариант с использованием dplyr и pivot_wider из tidyr

library(dplyr)

df %>%
  mutate(V2 = rep(c('Date', 'Title', 'Content'), length.out = n()), 
         row = rep(seq_len(n()), each  =3, length.out = n())) %>%
  tidyr::pivot_wider(names_from = V2, values_from = V1) %>%
  select(-row)

data

df <- structure(list(V1 = c("January 16, 2017", "President Obama announces something", 
"Today President Obama announced that", "January 17, 2017", "Press Briefing January 17th", 
"In todays briefing, the press secr")), class = "data.frame", row.names = c(NA, -6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...