如果我们需要通过“日期”和“时间”来split,可以方便地使用tidyr中的separate
library(tidyr)
df2 %>%
separate(DateTime, into = c("Date", "Time"), sep=" ")
如果我们需要提取年份,请使用gsub
df2$Year <- gsub(".*/|\\s+.*", "", df2$DateTime)
或者使用as.POSIXct,因为它是“日期时间”
df2$Year <- format(as.POSIXct(df2$DateTime, format = "%m/%d/%Y %H:%M:%S"), "%Y")
或者正如 @Jaap 在 cmets 中建议的那样
strptime(df2$DateTime, format = '%m/%d/%Y %I:%M:%S %p')$year + 1900
as.POSIXct 和strptime 的区别在于输出对象的class。对于as.POSIXct,它有POSIXct 类,而strptime 是POSIXlt 和POSIXct。除了上述之外,使用任何一种都有方便。如果有人想提取不同的部分,如“月”、“年”等,strptime 更方便。使用as.POSIXct,我们可以包装format 以提取“月”、“年”。另外,请注意strptime 类与dplyr 函数的使用存在一些冲突
或使用lubridate
library(lubridate)
df2$Year <- year(mdy_hms(df2$DateTime))
注意:使用日期时间函数进行提取比使用字符串操作更好