Как сделать несколько корпусов в R

Это данные обзора автомобиля, которые содержат более 40 000 строк, а каждый отзыв содержит более 500 символов. Это пример данных: https://drive.google.com/open?id=1ZRwzYH5McZIP2NLKxncmFaQ0mX1Pe0GShTMu57Tac_E

| brand  | review          | favorite        | c4 | c5 | c6 | c7 | c8 |
| brand1 | 500 characters1 | 100 characters1 |    |    |    |    |    |  
| brand2 | 500 characters2 | 100 Characters2 |    |    |    |    |    | 
| brand2 | 500 characters3 | 100 Characters3 |    |    |    |    |    |
| brand2 | 500 characters4 | 100 Characters4 |    |    |    |    |    | 
| brand3 | 500 characters5 | 100 Characters5 |    |    |    |    |    | 
| brand3 | 500 characters6 | 100 characters6 |    |    |    |    |    |

Я хотел бы объединить столбец обзора по брендам следующим образом:

| Brand  | review          | favorite        | c4 | c5 | c6 | c7 | c8 |
| brand1 | 500 characters1 | 100 characters1 |    |    |    |    |    |  
| brand2 | 500 characters2 | 100 Characters2 |    |    |    |    |    | 
|        | 500 characters3 | 100 Characters3 |    |    |    |    |    |
|        | 500 characters4 | 100 Characters4 |    |    |    |    |    | 
| brand3 | 500 characters5 | 100 Characters5 |    |    |    |    |    | 
|        | 500 characters6 | 100 characters6 |    |    |    |    |    |

Итак, я устал использовать агрегат().

temp <- aggregate(data$review ~ data$brand , data, as.list )

Но это занимает очень много времени.

Есть ли простой способ объединить это? Заранее спасибо!


person liveinfootball    schedule 14.10.2015    source источник
comment
Можете ли вы добавить небольшой пример желаемого результата? Я не могу это представить (что происходит с остальными столбцами?). Кроме того, вы можете подумать об изменении заголовка/тегов на что-то более общее. Похоже, ваш вопрос касается манипулирования данными, а не вопроса, относящегося к интеллектуальному анализу текста или корпусу.   -  person aosmith    schedule 14.10.2015


Ответы (1)


Попробуйте разделить их по каждому фактору, а затем склеить вместе. aggregate() — ужасно медленная функция, и ее следует избегать для всех наборов данных, кроме самых маленьких.

Это должно помочь: (обратите внимание, я скачал ваш файл Google как sampleDF.csv здесь)

sampleDF <- read.csv("~/Downloads/sampleDF.csv", stringsAsFactors = FALSE)

# aggregate text by brand
brand.split <- split(sampleDF$text, as.factor(sampleDF$Brand))
brand.grouped <- sapply(brand.split, paste, collapse = " ")

# aggregate favorite by brand
favorite.split <- split(sampleDF$favorite, as.factor(sampleDF$Brand))
favorite.grouped <- sapply(favorite.split, paste, collapse = " ")

newDf <- data.frame(brand = names(brand.split),
                    text <- favorite.grouped,
                    favorite <- favorite.grouped,
                    stringsAsFactors = FALSE)

Если вы хотите ввести другие переменные, они должны будут варьироваться только на уровне бренда.

person Ken Benoit    schedule 14.10.2015