问题 1:我有一个数据,其日期变量采用以下格式:
$ purchase_date: Factor w/ 525 levels "01APR2012:00:00:00"
如何为年份创建新列,为月份创建新列。
问题2:
data2$mydate <- data2$purchase_date
as.Date(data2$mydate, format = "%d%B%Y")
data2$Fyear<-ifelse(data2$mydate>="2011-08-01" & data2$mydate<"2012-08-31",2012,ifelse(data2$mydate>="2012-08-01" & data2$mydate<"2013-08-01",2013,ifelse(data2$mydate<"2011-08-01",2011,2014)))
> class(data2$mydate)
[1] "factor"
> typeof(data2$mydate)
[1] "integer"
Warning messages:
1: In Ops.factor(data2$mydate, "2011-08-01") :
‘>=’ not meaningful for factors
2: In Ops.factor(data2$mydate, "2012-08-31") :
‘<’ not meaningful for factors
如何从逻辑上比较日期?
非常感谢!
你可以
这样做:
df <- data.frame(date=c("18MAY2013:00:00:00","19MAY2013:00:00:00"))
df$year <- format(as.Date(df$date,"%d%B%Y"),"%Y")
df$month <- format(as.Date(df$date,"%d%B%Y"),"%m")
date year month
1 18MAY2013:00:00:00 2013 05
2 19MAY2013:00:00:00 2013 05
您可以使用润滑液,并先转换为日期。
library(lubridate)
library(dplyr)
df <- data.frame(date=c("18MAY2013:00:00:00","23MAY2017:00:00:00"))
df2 <- df %>%
mutate(date = as.Date(date, format = "%d%B%Y:%H:%M:%S"),
month = month(date),
year = year(date))
> df2
date month year
1 2013-05-18 5 2013
2 2017-05-23 5 2017