Как создать столбец данных строки, который является преобразованием строк в другом столбце в R? - PullRequest
0 голосов
/ 12 сентября 2011

Если у меня есть этот набор данных

Browser          Count
Chrome/11         100
Chrome/11         89
Chrome/13         10
Safari/12         40
Safari/114        30      

И я хочу получить более общую форму браузера без номера версии.

Browser          Clean_Browser       Count
Chrome/11         Chrome              100
Chrome/11         Chrome              89
Chrome/13         Chrome              10
Safari/12         Safari              40 
Safari/114        Safari              30

Я знаю, что это легкоделать с Python или Excel, но есть ли способ сделать это в R, чтобы мне не нужно предварительно обрабатывать данные?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Это довольно просто благодаря регулярным выражениям, а также обработке строк - оба векторизованы, так что вы не должны зацикливаться.Вы можете использовать

  • gsub() и др. И заменить '/ ...' пробелами

  • , даже использовать strsplit с '/'как разделенный персонаж и сохранить первый

  • , конечно, другие способы, о которых я не могу думать сейчас, и опыт подсказывает, что некоторые из них будут включать пакеты от Хэдли :) [шучу в сторону, посмотрите наstringr пакет тоже]

Вот первый подход, выполненный для вектора, но столбец в data.frame точно такой же:

R> vec <- c( paste("Chrome", 11:13, sep="/"), paste("Safari", 101:102, sep="/"))
R> vec
[1] "Chrome/11"  "Chrome/12"  "Chrome/13"  "Safari/101" "Safari/102"
R> newvec <- gsub("/.*$", "", vec, perl=TRUE)
R> newvec
[1] "Chrome" "Chrome" "Chrome" "Safari" "Safari"
R> 
1 голос
/ 12 сентября 2011

Вы можете использовать colsplit из пакета reshape, чтобы сделать это.

df = read.table(textConnection(
"Browser          Count
Chrome/11         100
Chrome/11         89
Chrome/13         10
Safari/12         40
Safari/114        30"), sep = "", header = TRUE) 

require(reshape)
browser_version = colsplit(df$Browser, names = c('browser', 'version'), split = '[/]')
df = cbind(df, browser_version)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...