- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 fwrite 在 R 中编写一个 csv。
我注意到写入的 csv 在 POSIXct 列中具有不同的值,这些值似乎与原始值相差一小时(尽管我不确定它是否始终相差一小时或随机值)。
例如,如果我从以下数据开始(日期时间被归类为 POSIXct):
查看(测试)
身份证 |日期
---+---------------------------
01 | 2016-10-26 08:19:00
02 | 2016-10-26 09:05:00
03 | 2016-10-26 09:15:00
04 | 2016-10-26 09:15:00
05 | 2016-10-26 09:28:00
后
fwrite(test, file = "test.csv", quote = TRUE)
nexttest <- fread("M:\\test.csv", sep = ",", header = TRUE)
查看(下一个测试)
返回是
身份证 |日期
---+---------------------------
01 | 2016-10-26T07:19:00Z
02 | 2016-10-26T08:05:00Z
03 | 2016-10-26T08:15:00Z
04 | 2016-10-26T08:15:00Z
05 | 2016-10-26T08:28:00Z
等等等等
使用 read.table 的结果是一样的。
我想我在 fwrite 语句中遗漏了一个参数。有任何想法吗?
sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United
Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
dput(head(test))
Date.Created = structure(c(1477919160, 1477915320, 1477936980,
1477919820, 1477917780, 1477909680), class = c("POSIXct",
"POSIXt"), tzone = "")
最佳答案
见 dateTimeAs
?fwrite
的论据:
How
Date
/IDate
,ITime
andPOSIXct
items are written.
"ISO"
(default) - 2016-09-12, 18:12:16 and 2016-09-12T18:12:16.999999Z. 0, 3 or 6 digits of fractional seconds are printed if and when present for convenience, regardless of any R options such asdigits.secs
. The idea being that if milli and microseconds are present then you most likely want to retain them. R's internal UTC representation is written faithfully to encourage ISO standards, stymie timezone ambiguity and for speed. An option to consider is to start R in the UTC timezone simply with "$ TZ='UTC' R" at the shell (NB: it must be one or more spaces between TZ='UTC' and R, anything else will be silently ignored; this TZ setting applies just to that R process) orSys.setenv(TZ='UTC')
at the R prompt and then continue as if UTC were local time.
POSIXct
对象显示在(参见
tz
的
as.POSIXct
参数)中并谨慎操作。
tzone = ''
,隐含您的
POSIXct
对象已获取您的本地时区(用于打印)。为了完全明确,您可以检查您的
Sys.timezone()
并将其添加到
tz
声明
POSIXct
时的参数对象,然后使用
attr(Date, 'tzone') = 'UTC'
将其转换为UTC。
t = Sys.time()
t
attr(t, 'tzone') = 'UTC'
t
# [1] "2017-11-09 10:43:59 UTC"
所以,如果你这样做:
attr(test$Date, 'tzone') = 'UTC'
test$Date
您应该看到这与
fwrite
产生的输出相匹配。 .
print.POSIXct
的代码和
format.POSIXct
并查看
unclass(t)
设置前后
attr(t, 'tzone') = 'UTC'
说服自己所有时区的使用都是肤浅的——R 中日期时间对象的内部表示总是“自纪元以来的秒数”,它只是
print
/
format
应用时区差异并影响您在打印时看到的对象表面的方法。
关于r - fwrite 更改 POSIXct 值的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47199428/
我有以下一段 R 代码: formatString = "%Y-%m-%d %H:%M:%OS" x = as.POSIXct(strptime("2013-11-23 23:10:38.000000
我在这里关注了一些有关如何将字符向量转换为日期时间类的问题。我经常看到两种方法,strptime 和 as.POSIXct/as.POSIXlt 方法。我查看了这两个函数,但不清楚它们有什么区别。 s
我很感兴趣,“ct”和“lt”(在 POSIXct 和 POSIXlt 中)的含义。它们是某种缩写吗?例如,“ct”是否表示“日历时间”,“lt”是否表示其他意思? 最佳答案 我自己正在研究这个问题,
考虑以下 POSIXct 日期列表: times <- list(as.POSIXct(c("2012-07-26 00:30", "2012-07-26 6:20",
我有一个类似 Round a POSIX date (POSIXct) with base R functionality 的问题,但我希望总是将日期四舍五入到第二天午夜(00:00:00)。 基本上
我有一个日期,我将其转换为数值,然后想转换回日期。 将日期转换为数字: date1 = as.POSIXct('2017-12-30 15:00:00') date1_num = as.numeric
查看时间格式说明符,我没有看到任何日期选项,例如 2/5/2010 (月/日/年,个位数,无前导空格)。是否有任何内置方法可以转换这种格式的日期? 最佳答案 as.POSIXct('2/5/2010'
我正在尝试解析时间字符串向量并遇到一个奇怪的错误。例如,如果我运行以下代码段,R 会按预期返回结果。 time_format="%m/%d/%Y %H:%M:%S" t_1 = "03/13/2011
我想我一定不明白 POSIXct 是如何工作的,或者什么的。据我了解,这是自纪元以来的几秒钟,纪元是标准时间,例如格林威治标准时间 1970-01-01。 我在 PST 中的 EST 中取了两个 PO
转换为 POSIXct 后,为什么下面的日期会更改为“2014-07-07”? Sys.setenv(TZ='America/Sao_Paulo') d as.POSIXct("2014-07-08
这个问题在这里已经有了答案: converting multiple date formats into one in r (2 个回答) 去年关闭。 嗨,我的数据中有多种日期格式。 如何转换为日期格
在大数据表中工作时,我在日期时间列中发现了不应该存在的 NA 值......所有这些值都应该是“2014-03-30 02:00:00”。 我做了一些试验: > as.POSIXct("2014-03
我在 R 中使用 POSIXct 管理时区时遇到问题。我设置了 TZ全局选项为 "Europe/London"但自从我们切换回格林威治标准时间以来,已经运行 as.POSIXct不再将数字向量转换回正
我正在尝试转换 yearmon日期(来自 zoo 包)到 UTC 时区中的 POSIXct。 这就是我试图做的: > as.POSIXct(as.yearmon("2010-01-01"), tz="
我将日期和时间存储在两列中。第一个的日期为“20180831”。时间存储为从午夜开始的秒数;凌晨 3 点将存储为 10,800。 我需要一个合并的日期时间列,并且在处理一些应该很简单的事情时遇到了困难
我有以下时间间隔,我想将其分成 10 个等间隔的实例。 head(data) stoptime starttime1 2014-08-19 14:52:04
这个问题已经有答案了: How R formats POSIXct with fractional seconds (2 个回答) 已关闭 10 年前。 我不确定这是否只是输出问题,但只是想检查一下。
我正在将 CSV 文件读入变量“stuff”并将第一列强制转换为 POSIXct(该列只有时间戳,格式为“2012-12-04 17:49:52”,因此效果很好). stuff[,1]<-as.POS
我有以下时间间隔,我想将其分成 10 个等间隔的实例。 head(data) stoptime starttime1 2014-08-19 14:52:04
我下载了一些气候再分析数据,花了很多时间从 grib 转换为 cdf,最后现在我成功地使其在 R 中工作。我遇到的下一个问题是时间是一个字符向量,类似于以下内容: tt =c( "200901
我是一名优秀的程序员,十分优秀!