2015-08-17 2 views
3

У меня есть data.frame следующегоЗамена конкретных значений в столбцах кадра данных с использованием GSUB в R

> df 
ID  Value 
A_001 DEL-1:7:35-8_1 
A_002 INS-4l:5_74:d 
B_023 0 
C_891 2 
D_787 8 
E_865 DEL-3:65:1s:b 

Я хотел бы заменить все значения в колонке Value, которая начинается с DEL и INS ни с чем. Я имею в виду я хотел бы получить выход следующего

> df 
ID  Value 
A_001 
A_002 
B_023 0 
C_891 2 
D_787 8 
E_865 

Я пытался добиться этого с помощью GSUB в R, используя следующий код, но оно не работает

gsub(pattern="(^([DEL|INS]*)",replacement="",df) 

Может кто-нибудь наставит меня, как достичь желаемых результатов ,

Заранее спасибо.

ответ

6

Просто удалите класс символов и добавьте .* рядом с этой группой. Только sub выполнит эту работу.

df$value <- sub("^(DEL|INS).*", "", df$value) 

Внутри класса символов каждый символ обрабатывается не как целая строка. Таким образом, [DEL] будет соответствовать одному символу из данного списка, это может быть D или E или L.

2

Первая буква не цифровой:

df$value <- gsub("^\\D.*", "", df$value) 

Или есть '-' в значении удаления:

df$value <- gsub(".*-.*", "", df$value) 
Смежные вопросы