R 如何从数据集中部分删除特定符号(如逗号)
我有这样一个数据集:R 如何从数据集中部分删除特定符号(如逗号),r,R,我有这样一个数据集: Quest_main=c("quest2,","quest5,","quest4,","quest12,","quest4,","quest5,quest7") 我想从例如“quest2”中去掉逗号,这样它就是“quest2”,而不是“quest5,quest7”。我想我必须使用substr或ifelse,但我不确定。当我调用Quest_main时,最终的结果是: "quest2" "quest5" "quest4" "quest12" "quest4"
Quest_main=c("quest2,","quest5,","quest4,","quest12,","quest4,","quest5,quest7")
我想从例如“quest2”中去掉逗号,这样它就是“quest2”,而不是“quest5,quest7”。我想我必须使用substr或ifelse,但我不确定。当我调用Quest_main时,最终的结果是:
"quest2" "quest5" "quest4" "quest12" "quest4" "quest5,quest7"
谢谢 你所需要的就是
gsub(",$","",Quest_main)
$
表示字符串的结尾:有关详细说明,请参阅(长且复杂的)?regexp
,或a,或在堆栈溢出上搜索标记[r][regex]
如果您坚持使用substr()
和ifelse()
,您可以:
nc <- nchar(Quest_main)
lastchar <- substr(Quest_main,nc,nc)
ifelse(lastchar==",",substr(Quest_main,1,nc-1),
Quest_main)
nc这里有一种替代方法(仅针对一般知识)使用
当您不仅要从单词的末尾删除逗号,还要指定其他条件时,这种方法更为通用
一个更通用的解决方案是使用stringi
sstri_trim_right
,这将在Bens或Jealie解决方案失败的情况下起作用,例如,当您想删除的句子末尾有许多逗号时,例如:
Quest_main <- c("quest2,,,," ,"quest5,quest7,,,,")
Quest_main
#[1] "quest2,,,," "quest5,quest7,,,,"
library(stringi)
stri_trim_right(Quest_main, pattern = "[^,]")
#[1] "quest2" "quest5,quest7"
Quest\u main带有子字符串和ifelse
:
ifelse(substring(Quest_main,nchar(Quest_main))==',',substring(Quest_main,1,nchar(Quest_main)-1),Quest_main)
这是一种超快速的方法。但是如果用ifelse和substr有可能吗?Trik23:看看我的答案。但是Ben Bolker的答案要好得多:)@Trik23-对于substr
,您首先需要找到,
发生的位置,这比gsub
@BenBolker作为R的初学者效率要低得多,我想看看不同的命令在R中是如何工作的。只是个人的好奇心和保持学习曲线。但是请注意,gsub(“,+$”,“”,Quest_main)
在这种情况下可以正常工作stringi
通常更快,但在其他方面则更方便。其他stringi
/gsub
比较:,
ifelse(substring(Quest_main,nchar(Quest_main))==',',substring(Quest_main,1,nchar(Quest_main)-1),Quest_main)