R读/写CSV时丢失小数点精度



我正在使用readr包中的read_csv读取带有R的数据。我有精确到十分之一秒的时间值,格式如下:2018-12-30T21:25:32.200T之前的所有内容都是日期,时间之后的所有内容的格式为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()在写入时间回退时将使用指定的精度。通常情况下,它的写入不需要毫秒。因此,当使用精确的时间时,这是一个有价值的选择。

相关内容

  • 没有找到相关文章

最新更新