R 使用一个gsub命令将不同的日期替换为其他日期
我有一个相当大的数据集,大约有200000行和15列,其中有一列“Date”,格式为“1/18/1996 0:00:00”,从1996年到2011年,我有不同的日期,格式相同:R 使用一个gsub命令将不同的日期替换为其他日期,r,gsub,R,Gsub,我有一个相当大的数据集,大约有200000行和15列,其中有一列“Date”,格式为“1/18/1996 0:00:00”,从1996年到2011年,我有不同的日期,格式相同: head(data$Date) [1] "1/6/1996 0:00:00" "1/11/1996 0:00:00" "1/11/1996 0:00:00" "1/11/1996 0:00:00" [5] "1/11/1996 0:00:00" "1/18/1996 0:00:00" 我想用“1996年、1997年、
head(data$Date)
[1] "1/6/1996 0:00:00" "1/11/1996 0:00:00" "1/11/1996 0:00:00" "1/11/1996 0:00:00"
[5] "1/11/1996 0:00:00" "1/18/1996 0:00:00"
我想用“1996年、1997年、2011年”来代替这些日期;我可以使用以下几个gsub命令:
x<- gsub(".*/1996 .*", "1996", data$Date)
Date <- c("1/6/1996 0:00:00", "1/11/1996 0:00:00", "1/11/1996 0:00:00",
"1/11/1996 0:00:00", "1/11/1996 0:00:00", "1/18/1996 0:00:00")
Date <- as.POSIXct(Date, format="%m/%d/%Y %H:%M:%S", tz="UTC")
as.POSIXlt(Date)$year + 1900
#[1] 1996 1996 1996 1996 1996 1996
xdata$Date.new这里有一种方法:
Date <- c("1/6/1996 0:00:00", "1/11/1996 0:00:00", "1/11/1996 0:00:00",
"1/11/1996 0:00:00", "1/11/1996 0:00:00", "1/18/1996 0:00:00")
gsub("(.+/){2}| .+", "", Date)
# [1] "1996" "1996" "1996" "1996" "1996" "1996"
Date对于以下任务,您应该使用datetime函数而不是regex:
x<- gsub(".*/1996 .*", "1996", data$Date)
Date <- c("1/6/1996 0:00:00", "1/11/1996 0:00:00", "1/11/1996 0:00:00",
"1/11/1996 0:00:00", "1/11/1996 0:00:00", "1/18/1996 0:00:00")
Date <- as.POSIXct(Date, format="%m/%d/%Y %H:%M:%S", tz="UTC")
as.POSIXlt(Date)$year + 1900
#[1] 1996 1996 1996 1996 1996 1996
Date使用lubridate
和@Sven数据,使用内置函数(如mdy\u hms
)将字符串转换为日期更容易:
mdy_hms(Dates)
"1996-01-06 UTC" "1996-01-11 UTC" "1996-01-11 UTC"
"1996-01-11 UTC" "1996-01-11 UTC" "1996-01-18 UTC"
要获得年份,可以应用year
功能:
year(mdy_hms(Dates))
1996 1996 1996 1996 1996 1996
斯文,谢谢,效果很好:-)。。。我一直在努力使用gsubfn…但看起来你的方式很棒!我必须搜索更多来找出这些元字符是如何工作的?感谢罗兰,非常简单的方法:-)你是对的,使用日期时间函数更容易!