我的日期记录为:月/日/年或MM / DD / YYYY
我想编写代码,根据该信息创建两个新变量。
第1季将是1月1日至3月31日 第2季将是4月1日至6月30日 第3季将是7月1日至9月30日 第4季将是10月1日至12月31日
非常感谢任何帮助。我似乎无法在R中获得如何执行这些功能的细微差别。
谢谢,
贾里德
答案 0 :(得分:1)
假设date
变量属于POSIX**
类,您可以这样做:
#example date
date <- as.POSIXlt( "05/12/2015", format='%m/%d/%Y')
为了从data.table
已经具有执行此功能的日期返回年份,这是year
:
library(data.table)
> year(date)
[1] 2015
至于季度,可以从下面的函数轻松创建它(使用返回一个月的data.table::month
):
quarter <- function(x) {
rep(c('quarter 1','quarter 2','quarter 3','quarter 4'), each=3)[month(x)]
}
> quarter(date)
[1] "quarter 2"
答案 1 :(得分:0)
仅使用基础包:
尝试使用strptime fxn格式化日期,以便所有日期现在都是年 - 月 - 日格式。此格式将日期的每个元素约束为相同的字符长度并位于相同的位置。查看strptime文档以获取适当的格式化参数。
date.vec<-c(1/1/1999,2/2/1999)
fmt.date.vec<-strptime(date.vec, "%m/%d/%Y")
使用此格式的日期,可以使用子字符串函数轻松提取年,月和日
Year<-substring(fmt.date.vec,1,4)
Month<-substring(fmt.date.vec,6,7)
Day<-substring(fmt.date.vec,9,10)
使用此信息,您现在可以通过多种方式生成Quarter矢量。例如,如果data.frame“df”具有Month列:
df$Quarter<-"Quarter_1"
df[df$Month %in% c("04","05","06"),]$Quarter<-"Quarter_2"
df[df$Month %in% c("07","08","09"),]$Quarter<-"Quarter_3"
df[df$Month %in% c("10","11","12"),]$Quarter<-"Quarter_4"