我有一张信息表,包括日期和时间。年,月,日,时(HHMM)在单独的栏目中。时间在CST。我需要将它们全部放在一个col中。并将时间更改为UTC。我需要使用lubridate来做到这一点。
以下是我要做的事情。但总是出现错误
data<-read.csv("StormEvents_details_d1950_d2014.csv", header=T, stringsAsFactors = FALSE)
data1<-mutate(data1, begin_date=str_c(begin_year, "-", begin_month, "-", begin_day, " ", begin_time))
data1<-mutate(data1, end_date=str_c(end_year, "-", end_month, "-", end_day, " ", end_time))
data1$begin_date<-ymd_hm(data1$begin_date)
data1$begin_date<-ymd_hms(data1$begin_date, tz="CST6CDT")
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
答案 0 :(得分:0)
这可能与此错误有关: https://github.com/hadley/lubridate/issues/224
我不认为OP会对此感兴趣,但可以使用以下代码重现此错误:
library(lubridate)
dmy_hm("3/10/2010 1:59",tz="Australia/Melbourne") # good
dmy_hm("3/10/2010 2:00",tz="Australia/Melbourne") # this time never existed
dmy_hm("10/3/2010 2:00",tz="US/Pacific") # this time never existed
请注意,在春季,通过将时间从凌晨2点改为凌晨3点将时钟调整为夏令时,因此每年有60分钟不存在。
显然它不应该出错,但是我用最新的lubridate
(1。3。3)(2015年4月23日)尝试了这个并且错误仍然存在。
我可以看到两种解决方法。
ymd_hms
数据转换为UCT(它没有DST调整)difftime
从这些时间中减去时区差异。attr(ddf$time, "tzone") <- "US/Pacific"
或者...
ymd_hms
(或其他)希望这有助于某人。