2014-02-04 5 views
0

Я делаю предварительную обработку данных и застрял в проблеме. У меня есть данные, такие как Telma 2525 mg tablet. Я хочу, чтобы он был преобразован в таблетку Telma 25 мг. Можно ли это сделать?Предварительная обработка данных в R для удаления дубликата в строке

Благодаря

+0

см. '? Regex'. Является ли формат строки неизменным? 'Имя ## mg'? –

+0

Да, формат всегда один и тот же – user3171906

ответ

1

gusb()

> x<-rep("Telma 2525 mg tablet",10) 
> x 
[1] "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" 
[6] "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" "Telma 2525 mg tablet" 

> gsub("Telma 2525 mg tablet","Telma 25 mg tablet",x) 

[1] "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" 
[6] "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" "Telma 25 mg tablet" 

где x ваш источник данных

EDIT - ОБНОВЛЕНО СДЕЛАТЬ ЭТО GENERIC

d<-data.frame(t=c("blah blah 2525 mg", "blah blah 7272 mg"),stringsAsFactors=F) 

remdup<-function(s){ 
f<-regexec("[0-9]{4}",s)[[1]][1] # find the start point for 4 digits in a row 
sub(substr(s,f,f+1),"",s)  # remove the first match of the first 2 digits 
} 

lapply(d$t,FUN=function(x)remdup(x)) 

#[[1]] 
#[1] "blah blah 25 mg" 
# 
#[[2]] 
#[1] "blah blah 72 mg" 
+0

Мне нужен общий способ. т.е. для telma 1010 мг, телма 7272 мг и т. д. – user3171906

+0

Обновлено с общей функцией – Troy

0

Решение 1: Repl ace пользовательские строки с допустимыми значениями со стандартизацией custom string-Telma 2525 mg Допустимое значение-Telma 25 мг

Решение 2: через справочную таблицу.