Разделить множитель на столбцы r

Я пытаюсь разбить separate (tidyr) line_text на отдельные слова, так что по одному слову на столбец.

Данные:

structure(list(ID = c(140L, 233L, 233L), 
pdf_name = structure(c(1L, 
2L, 2L), .
Label = c("GBD2016_2_1255_Venezuela_MoH_Epi_2012_9.pdf", 
"GBD2016_2_1351_Venezuela_MoH_Epi_2014_44.pdf"), 
class = "factor"), 
keyword = c("SEGÚN GRUPOS", "SEGÚN GRUPOS", "SEGÚN GRUPOS"
), line_text = list("2000 Gráfico 2 . CASOS DE MALARIA SEGÚN GRUPOS DE EDAD Y SEXO,                                                                                                                         EPIDEMIOLÓGICA 9 Año 2012", 
    "GRÁFICO 2. CASOS DE MALARIA SEGÚN GRUPOS DE EDAD Y SEXO, HASTA", 
    "GRÁFICO 2. CASOS DE            SEGÚN GRUPOS"), 
.Names = c("ID", "pdf_name", "keyword", 
"page_num", "line_num", "line_text", "token_text"), row.names = c(NA, 
-3L), class = "data.frame")

Используемый код:

numcols<- make.unique(c(rep("word",10, sep  = " ")) )

df<- reportdiagn%>%
 (separate(reportdiagn$line_text,
        into = numcols, 
        sep = ("")))

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

`Error in UseMethod("separate_") : 
 no applicable method for 'separate_' applied to an object of class "factor

Попробуйте: separate(reportdiagn, "line_text", into = numcols, sep = " ")

zx8754 31.10.2018 13:38

Кстати, данные вашего примера dput искажены, не могли бы вы отредактировать свой пост: dput(head(reportdiagn, 3))

zx8754 31.10.2018 13:38
3
2
263
1

Ответы 1

Данные, которые вы вставили, не совсем правильные. Было бы неплохо попробовать еще раз, но я все равно попытался воспроизвести ваши данные. Это может быть не совсем то же самое. Я установил строчный текст как символьную строку, но я думаю, что приведенный ниже код работает либо с символом, либо с коэффициентом.

В select() вам не нужно ссылаться на фрейм данных - %>% уже делает это, вам просто нужно имя переменной без кавычек. Кроме того, ваш sep должен быть пробелом или \\b для границы слова.

ID <- c(140, 233, 233)
pdf_name <- factor(c(1, 2, 2),
    labels = c(
        "GBD2016_2_1255_Venezuela_MoH_Epi_2012_9.pdf", 
        "GBD2016_2_1351_Venezuela_MoH_Epi_2014_44.pdf") 
)
keyword <- c("SEGÚN GRUPOS", "SEGÚN GRUPOS", "SEGÚN GRUPOS")
line_text <- c("2000 Gráfico 2 . CASOS DE MALARIA SEGÚN GRUPOS DE EDAD Y SEXO, EPIDEMIOLÓGICA 9 Año 2012", 
               "GRÁFICO 2. CASOS DE MALARIA SEGÚN GRUPOS DE EDAD Y SEXO, HASTA", 
               "GRÁFICO 2. CASOS DE SEGÚN GRUPOS.")
reportdiagn <- data.frame(ID, pdf_name, keyword, line_text)

numcols<- make.unique(c(rep("word",10 )) )

df <- reportdiagn %>%
    separate(line_text,
              into = numcols, 
              sep = " ")

Это дает некоторые значения NA, где меньше 10 слов, и обрезает, когда их больше. Я полагаю, вы этого ожидаете.

Это был грубый пример, так что это не имеет значения.

Bohnston 31.10.2018 15:33

Другие вопросы по теме