我正在使用readr
包中的read_csv
读取带有R的数据。我有精确到十分之一秒的时间值,格式如下:2018-12-30T21:25:32.200
,T
之前的所有内容都是日期,时间之后的所有内容的格式为HH:MM:SS:每秒小数。
但是,当将其分配给具有read_csv
的变量时,打印时会重新格式化并截断为仅2018-12-30 21:25:32 UTC
。我不确定UTC是从哪里来的,也不确定我的几分之一秒是从哪里去的。当我使用write_csv
将此数据写回csv时,结果如下:2018-12-30T21:25:32Z
。如何防止我的数据被切断?一秒钟的数据对我的项目至关重要。
您必须设置digits.secs
选项才能正确查看和写入毫秒:
# Create test data
f <- file("test.csv", open = "w")
writeLines("MyPreciseTime", con = f)
writeLines("2018-12-30T21:25:32.200", con = f)
writeLines("2018-12-30T21:25:32.201", con = f)
writeLines("2018-12-30T21:25:32.202", con = f)
close(f)
library(readr)
# Input format not specified but milliseconds still stored
df <- read_csv("test.csv")
# Set the options for digits.secs
options(digits.secs = 3)
# Now print will show the milliseconds
print(df$MyPreciseTime, usetz = FALSE)
# [1] "2018-12-30 21:25:32.200" "2018-12-30 21:25:32.200"
# [3] "2018-12-30 21:25:32.201"
请注意,如果digits.secs
选项设置得当,则write_csv()
在写入时间回退时将使用指定的精度。通常情况下,它的写入不需要毫秒。因此,当使用精确的时间时,这是一个有价值的选择。