R gsub将替换除
我有一个数据框,有这样一列R gsub将替换除,r,replace,R,Replace,我有一个数据框,有这样一列 Id Comment 1 \u009cYes yes for ever for ever the boys cried in their ringing voices with softened faces on 02/14/2016 2 \u009cYes yes for ever for ever the cried in their ringing voices with softened faces on 01/14/2010
Id Comment
1 \u009cYes yes for ever for ever the boys cried in their ringing voices with softened faces on 02/14/2016
2 \u009cYes yes for ever for ever the cried in their ringing voices with softened faces on 01/14/2010
3 \u009cYes yes for ever for ever t 12/04/2003
4 \u009c for ever for ever ringing voices 07/02/2002
5 \u009c for ever for ever ringing softened faces 07/09/2001
Id Comment
1 ringing 02/14/2016
2 ringing 01/14/2010
3 12/04/2003
4 ringing 07/02/2002
5 ringing 07/09/2001
如何使用gsub替换除铃声
和2016年2月14日
最后一列应该是这样的
Id Comment
1 \u009cYes yes for ever for ever the boys cried in their ringing voices with softened faces on 02/14/2016
2 \u009cYes yes for ever for ever the cried in their ringing voices with softened faces on 01/14/2010
3 \u009cYes yes for ever for ever t 12/04/2003
4 \u009c for ever for ever ringing voices 07/02/2002
5 \u009c for ever for ever ringing softened faces 07/09/2001
Id Comment
1 ringing 02/14/2016
2 ringing 01/14/2010
3 12/04/2003
4 ringing 07/02/2002
5 ringing 07/09/2001
-----根据G.Grothendieck、Frank和Dason的评论更新的问题关于:
df <- read.table(text="Id,Comment
1,\u009cYes yes for ever for ever the boys cried in their ringing voices with softened faces on 02/14/2016
2,\u009cYes yes for ever for ever the cried in their ringing voices with softened faces on 01/14/2010
3,\u009cYes yes for ever for ever t 12/04/2003
4,\u009c for ever for ever ringing voices 07/02/2002
5,\u009c for ever for ever ringing softened faces 07/09/2001", header=T, sep=",")
df$ringing <- ''
df[grep("ringing", df$Comment), 'ringing'] <- 'ringing'
df[grep("../../..", df$Comment), 'date'] <- regmatches(df$Comment,regexpr("../../..", df$Comment))
df$res <- paste(df$ringing, df$date)
df您可以使用dplyr
如下。不过,可能有一种更好的方法来处理正则表达式(即w/o需要粘贴
)。这假设数据已经在df
中
library(dplyr)
df %>%
mutate(Comment = paste0( ifelse(grepl('ringing', Comment), 'ringing ', ''),
gsub('^.*(\\d{2}/\\d{2}/\\d{4}).*', '\\1', Comment)))
... 如何确定这些是您想要的结果?我想您至少需要两个示例字符串来说明问题的性质。如果你只有这一个字符串,并且确切地知道需要从中提取什么,你就可以这样做。@Frank,我有一个列,列中有很多行都是垃圾,我只想保留两样东西,一个是单词(ringing),第二个是数字或日期,比如带点或斜杠(/
)或者dash@Dason,和我上面说的一样,如果你只想知道哪些行有振铃,哪些行有指定形式的日期,那么transform(DF,has_ringing=grepl(“ringing”,colX),has_date=grepl(“../../....”,colX))
假设DF
是数据帧,colX
是相关列regmatches
、gsubfn中的strapplyc
、以及stringr中的某些函数都可以提取匹配的字符串。