使用 R 中的日期变量对数据进行分类
Categorizing data using date variable in R
我在使用数据集中的日期变量创建 6 个月时间段的类别时遇到了问题。我想为 2017-1-1 和 2020-6-30 之间的年份创建这些时间段类别。每年的时间段类别为 2017-1-1 至 2017-6-30,以及 2017-7-1 至 2017-12-31 至 2020-6-30。
我使用了以下两种类型的代码来创建日期类别,但我遇到了类似的错误:
#CODE1
#checking for date class
myData <- str(myData)
myData #date in factor class
#convert to date class
date_class <- as.Date(myData$date, format = "%m/%d/%Y")
myData$date_class <- as.Date(myData$date, format = "%m/%d/%Y")
myData
#creating timeperiod category 1
date_cat <- NA
myData$date_cat[which(myData$date_class >= "2017-1-1" & myData$date_class < "2017-7-1")] <- 1
#CODE2
#converting to date format
myData$date <- strptime(myData$date,format="%m/%d/%Y")
myData$date <- as.POSIXct(myData$date)
myData
#creating timeperiod category 1
date_cat <- NA
myData$date_cat[which(myData$date >= "2017-1-1" & myData$date < "2017-7-1")] <- 1
对于这两个代码,我都遇到了类似的错误
错误 $<-.data.frame
(*tmp*
, date_cat, value = numeric(0)) :
替换有 0 行,数据有 1123
请帮助我理解我哪里出错了。
谢谢,
普里亚
这是一个函数 (to.interval) returns 时间间隔 {0, 1, 2, 3, ...},给定事件日期、索引日期和间隔参数宽度。在函数中包含错误检查可能是个好主意,因此如果事件日期早于锚点日期,则 returns NA。
df <- data.frame(event.date=as.Date(c("2017-01-01", "2017-08-01", "2018-04-30")))
to.interval <- function(anchor.date, future.date, interval.days){
round(as.integer(future.date - anchor.date) / interval.days, 0)}
df$interval <- to.interval(as.Date('2017-01-01'),
df$event.date, 180 )
df
输出
event.date interval
1 2017-01-01 0
2 2017-08-01 1
3 2018-04-30 3
我在使用数据集中的日期变量创建 6 个月时间段的类别时遇到了问题。我想为 2017-1-1 和 2020-6-30 之间的年份创建这些时间段类别。每年的时间段类别为 2017-1-1 至 2017-6-30,以及 2017-7-1 至 2017-12-31 至 2020-6-30。 我使用了以下两种类型的代码来创建日期类别,但我遇到了类似的错误:
#CODE1
#checking for date class
myData <- str(myData)
myData #date in factor class
#convert to date class
date_class <- as.Date(myData$date, format = "%m/%d/%Y")
myData$date_class <- as.Date(myData$date, format = "%m/%d/%Y")
myData
#creating timeperiod category 1
date_cat <- NA
myData$date_cat[which(myData$date_class >= "2017-1-1" & myData$date_class < "2017-7-1")] <- 1
#CODE2
#converting to date format
myData$date <- strptime(myData$date,format="%m/%d/%Y")
myData$date <- as.POSIXct(myData$date)
myData
#creating timeperiod category 1
date_cat <- NA
myData$date_cat[which(myData$date >= "2017-1-1" & myData$date < "2017-7-1")] <- 1
对于这两个代码,我都遇到了类似的错误
错误 $<-.data.frame
(*tmp*
, date_cat, value = numeric(0)) :
替换有 0 行,数据有 1123
请帮助我理解我哪里出错了。
谢谢, 普里亚
这是一个函数 (to.interval) returns 时间间隔 {0, 1, 2, 3, ...},给定事件日期、索引日期和间隔参数宽度。在函数中包含错误检查可能是个好主意,因此如果事件日期早于锚点日期,则 returns NA。
df <- data.frame(event.date=as.Date(c("2017-01-01", "2017-08-01", "2018-04-30")))
to.interval <- function(anchor.date, future.date, interval.days){
round(as.integer(future.date - anchor.date) / interval.days, 0)}
df$interval <- to.interval(as.Date('2017-01-01'),
df$event.date, 180 )
df
输出
event.date interval
1 2017-01-01 0
2 2017-08-01 1
3 2018-04-30 3