Удаление всего после символа в столбце В R
мне нужно удалить все после знака вопроса в столбце.
у меня есть набор данных, например:
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 ?
1 ответов
можно использовать 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)