我有一个数据框transactions
Cust_no date debit credit comment
1234 12DEC2013 0 100 ATMW XYZ 8974632
1234 11DEC2013 200 0 TFR - XXXX3948389
1543 01DEC2013 3000 0 SAL - CitiBank
1543 02DEC2013 0 800 CHQ TO FAMILY
1543 10DEC2014 10 0 INSURANCE GENERALE
7777 01DEC2014 2500 0 SALARY/01-12-2013/ENJOY
我的目标是从comment
列中删除所有银行术语,特殊字符和其他不需要的内容,将其存储在变量中,并将新列添加到同一个表中。因此,我将grep()
与gsub()
listOfTerms <- ... #the regular expression that contains terms to be removed
NewComment <- gsub(paste(listOfTerms,collapse="|"), " ", transactions[grep(paste(listOfTerms,collapse="|") ,transactions$comment,ignore.case=TRUE),])
但问题是NewComment
仅包含匹配模式的元素,并且它为我提供Large Character
而不是vector
我尝试过使用sub()
,但即便如此,显然我的输出相同。
那么,如果遇到不匹配的字符串并在一个向量中添加“已更正”的行和不匹配的行,我如何告诉gsub(pattern,grep(...))
不要做任何事情?所需的输出如下所示。
Cust_no date debit credit comment NewComment
1234 12DEC2013 0 100 ATMW XYZ 8974632 XYZ
1234 11DEC2013 200 0 TFR - XXXX3948389 XXXX
1543 01DEC2013 3000 0 SAL - CitiBank CitiBank
1543 02DEC2013 0 800 CHQ TO FAMILY TO FAMILY
1543 10DEC2014 10 0 INSURANCE GENERALE INSURANCE GENERALE
7777 01DEC2014 2500 0 SALARY/01-12-2013/ENJOY ENJOY
答案 0 :(得分:0)
您可以在没有gsub
的情况下使用grep
,gsub
将替换与模式匹配的每个字符串的部分,如果没有匹配,您将获得原始字符串。
尝试:
transactions$NewComment<-gsub(paste(listOfTerms,collapse="|"),"",transactions$comment)