2015-08-05 2 views
5

Мне нужно удалить все после знака вопроса в столбце.Удаление всего после символа в столбце в R

У меня есть набор данных EX:

my.data 

BABY  MOM  LANDING 
mark  dina  www.example.com/?kdvhzkajvkadjf 
tom  becky www.example.com/?ghkadkho[qeu 
brad  tina  www.example.com/?klsdfngal;j 

Я хочу, чтобы мои новые данные были:

new.data 

BABY  MOM  LANDING 
mark  dina  www.example.com/? 
tom  becky www.example.com/? 
brad  tina  www.example.com/? 

Как сказать R, чтобы удалить все после ? в my.data$LANDING?

ответ

10

Мы можем использовать sub, чтобы удалить символы, которые после ?. Мы используем положительный lookbehind ((?<=\\?).*) для соответствия одному или нескольким символам (.), которым предшествует ? и заменяем его ''.

my.data$LANDING <- sub('(?<=\\?).*$', '', my.data$LANDING, perl=TRUE) 
my.data 
# BABY MOM  LANDING 
#1 mark dina www.example.com/? 
#2 tom becky www.example.com/? 
#3 brad tina www.example.com/? 

Или другой вариант будет использовать capture groups, а затем заменить второй аргумент с группой захвата (\\1).

my.data$LANDING <- sub('([^?]+\\?).*', '\\1', my.data$LANDING) 

Здесь мы сопоставляем все символы, которые не ? ([^?]+) с последующим ? (\\?) и использовать круглые скобки, чтобы захватить как группа (([^?]+\\?)), и мы оставляем остальные символы не в группе (.*).

Или, как @Frank упоминалось в комментариях, мы можем соответствовать ? и остальные символы (.*), и заменить его \\? в качестве второго аргумента.

my.data$LANDING <- sub("\\?.*","\\?",my.data$LANDING) 
+1

Вместо просмотра назад, вы могли бы заменить запрос с пустой строкой: 'юга (? " \\ *", "? \\", my.data $ ПОСАДКИ)' – Frank

+1

Спасибо, что было именно то, что мне нужно. –

Смежные вопросы