gpt4 book ai didi

删除R中列中字符后的所有内容

转载 作者:行者123 更新时间:2023-12-04 10:49:19 24 4
gpt4 key购买 nike

我需要删除列中问号后的所有内容。

我有一个数据集 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 ?

最佳答案

我们可以使用 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)

关于删除R中列中字符后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com