我需要删除列中问号后面的所有内容.
我有一个数据集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
Run Code Online (Sandbox Code Playgroud)
我希望我的新数据是:
new.data
BABY MOM LANDING
mark dina www.example.com/?
tom becky www.example.com/?
brad tina www.example.com/?
Run Code Online (Sandbox Code Playgroud)
如何让R后,除去一切?的my.data$LANDING?
akr*_*run 11
我们可以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/?
Run Code Online (Sandbox Code Playgroud)
或者另一种选择是使用capture groups然后用捕获组(\\1)替换第二个参数.
my.data$LANDING <- sub('([^?]+\\?).*', '\\1', my.data$LANDING)
Run Code Online (Sandbox Code Playgroud)
在这里,我们匹配所有不是?([^?]+)后跟?(\\?)的字符,并使用括号捕获为group(([^?]+\\?)),我们将其余字符留在group(.*)中.
或者如评论中提到的@Frank,我们可以匹配?其余的字符(.*),并将其替换\\?为第二个参数.
my.data$LANDING <- sub("\\?.*","\\?",my.data$LANDING)
Run Code Online (Sandbox Code Playgroud)