我有一个包含带有年份(OldLabel)标签的列的数据集,我想创建另一列,它只包含标签,而不包含年份(NewLabel)。我编写了以下代码,但在新标签的末尾留出了一个空格。
data["NewLabel"] <- gsub("20..", "", data$OldLabel)
#removes any part of the OldLabel column that starts with 20 and ends with 2 digits, e.g: 2011 or 2008有没有办法让gsub用一个后备空间来替换序列,这样它就可以在一年内去掉任何空格?我尝试使用"\\b"作为我的替代文本,但这只是用b代替了它,而不是一个后置空间。
编辑:每一个请求,OldLabel的一个例子就是"Valley Summer 2014",它应该变成"Valley Summer",但在我当前的代码中是"Valley Summer "。但是,也有一些是2012 Valley Summer格式的,所以我不认为在模式中只包含一个空格就足够健壮了。
发布于 2017-05-31 22:13:17
data["NewLabel"] <- gsub("\\s*[0-9]\\s*", "", data$OldLabel)发布于 2017-05-31 22:08:58
试试这个:
data["NewLabel"] <- gsub("[ ]{0,1}20[[:digit:]]{2}[ ]{0,1}", "", data$OldLabel)成对的curley-大括号是重复量词,其范围由一个(精确)或两个(最小和最大)值决定。有关更多详细信息,请参阅?regex。(您不想用退格字符替换它们。)
test <- c("2012 Valley Summer", "Valley Summer 2014")
gsub("[ ]{0,1}20[[:digit:]]{2}[ ]{0,1}", "", test)
#[1] "Valley Summer" "Valley Summer"https://stackoverflow.com/questions/44295380
复制相似问题