我需要删除列中问号后面的所有内容。
我有一个数据集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 删除之后的所有内容?
in my.data$LANDING
?
我们可以用sub
删除后面的字符?
。我们使用正向回顾((?<=\\?).*
) 匹配一个或多个字符 (.
) 之前是?
并将其替换为''
.
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)