Удаление всего после символа в столбце В 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)