Есть несколько способов упростить вашу переменную.Здесь я буду использовать пакет stringr
для функций манипуляции со строками:
R> library(stringr)
Сначала скопируйте переменную типа контента в новую символьную переменную:
R> d <- data.frame(type=c("video/x-flv", "image/jpeg","video/x-msvideo", "application/x-javascript; charset=utf-8", "application/x-javascript"))
R> d$type2 <- as.character(d$type)
, которая просто дает вам:
type type2
1 video/x-flv video/x-flv
2 image/jpeg image/jpeg
3 video/x-msvideo video/x-msvideo
4 application/x-javascript; charset=utf-8 application/x-javascript; charset=utf-8
5 application/x-javascript application/x-javascript
Затем вы можете работать с новой переменной.Вы можете просто вручную заменить определенное значение типа другим:
R> d$type2[d$type2 == "video/x-flv"] <- "video"
R> d
type type2
1 video/x-flv video
2 image/jpeg image/jpeg
3 video/x-msvideo video/x-msvideo
4 application/x-javascript; charset=utf-8 application/x-javascript; charset=utf-8
5 application/x-javascript application/x-javascript
Вы можете использовать сопоставление с регулярным выражением для замены всех совпадающих значений, например, "video":
R> d$type2[str_detect(d$type2, ".*video.*")] <- "video"
R> d
type type2
1 video/x-flv video
2 image/jpeg image/jpeg
3 video/x-msvideo video
4 application/x-javascript; charset=utf-8 application/x-javascript; charset=utf-8
5 application/x-javascript application/x-javascript
Или выможет использовать замену регулярного выражения для очистки определенных значений.Например, удалив все за ";"в типах контента:
R> d$type2 <- str_replace(d$type2, ";.*$", "")
R> d
type type2
1 video/x-flv video
2 image/jpeg image/jpeg
3 video/x-msvideo video
4 application/x-javascript; charset=utf-8 application/x-javascript
5 application/x-javascript application/x-javascript
Будьте осторожны с порядком выполнения ваших инструкций, так как от этого сильно зависит ваш результат.