R openxlsx read.xlsx 日期时间有问题
R openxlsx read.xlsx having issues with datetime
这个问题似乎已经被问过很多次了——没有一个有用的解决办法——所以我再试一次。
我的 excel 数据时间列的格式为:"MM/DD/YY HH:MM"
我正在使用以下代码读取文件:
datai <- read.xlsx(xlsxFile= file.path(work_dir,"..", "Databases", study, subfolder, file),
sheet = "Monitoring Data", detectDates = FALSE, check.names = TRUE,
na.strings = "NA", fillMergedCells = FALSE, cols = 1:27)
datai$Time.Stamp..mm.dd.yy.hh.mm.<- convertToDateTime(datai$Time.Stamp..mm.dd.yy.hh.mm.)
使用这样的代码,日期导入正确,但时间不导入。
而且我已经尝试使用 detectDates = TRUE
,这给了我一个无法辨认的结果。
例如,前 5 个日期应读作
"12/1/15 0:00", "12/1/15 1:00", "12/1/15 2:00", "12/1/15 0:00", "12/1/15 3:00", "12/1/15 4:00"
但他们读为
"2015-12-01" "4233-01-16" "4233-02-02" "4233-02-18" "4233-03-07"
我也试过添加
data <- read.xlsx(xlsxFile= file.path(work_dir,"..", "Databases", study, subfolder, file),
startRow = 1,sheet = "Monitoring Data", detectDates = TRUE, check.names = TRUE, colNames = TRUE,
rowNames = FALSE, skipEmptyRows = TRUE, skipEmptyCols = TRUE, rows = NULL, sep.names = ".",
na.strings = "NA", fillMergedCells = FALSE, cols = 1:27,
getOption("openxlsx.datetimeFormat", "mm/dd/yyyy hh:mm"))
但是得到这个错误: Region 'mm/dd/yyyy hh:mm' not found!
根据其他问题的答案,大多数人建议切换到 readxl::read_excel
- 这确实有效,但打开文件需要花费大量时间。有没有人对尝试让 read.xlsx 正确读取日期有什么想法?
我的 excel 数据的片段:
如果时间戳是数字,您可以手动转换它,例如使用包 datetimeutils
中的函数 convert_date
(我维护):
library("datetimeutils")
x <- 44038.8394469843
convert_date(x, type = "excel", fraction = TRUE)
## [1] "2020-07-26 20:08:48 CEST"
如果您需要特定时区,您也可以指定:
convert_date(x, type = "excel", fraction = TRUE, tz = "America/New_York")
## [1] "2020-07-26 20:08:48 EDT"
这个问题似乎已经被问过很多次了——没有一个有用的解决办法——所以我再试一次。
我的 excel 数据时间列的格式为:"MM/DD/YY HH:MM"
我正在使用以下代码读取文件:
datai <- read.xlsx(xlsxFile= file.path(work_dir,"..", "Databases", study, subfolder, file),
sheet = "Monitoring Data", detectDates = FALSE, check.names = TRUE,
na.strings = "NA", fillMergedCells = FALSE, cols = 1:27)
datai$Time.Stamp..mm.dd.yy.hh.mm.<- convertToDateTime(datai$Time.Stamp..mm.dd.yy.hh.mm.)
使用这样的代码,日期导入正确,但时间不导入。
而且我已经尝试使用 detectDates = TRUE
,这给了我一个无法辨认的结果。
例如,前 5 个日期应读作
"12/1/15 0:00", "12/1/15 1:00", "12/1/15 2:00", "12/1/15 0:00", "12/1/15 3:00", "12/1/15 4:00"
但他们读为
"2015-12-01" "4233-01-16" "4233-02-02" "4233-02-18" "4233-03-07"
我也试过添加
data <- read.xlsx(xlsxFile= file.path(work_dir,"..", "Databases", study, subfolder, file),
startRow = 1,sheet = "Monitoring Data", detectDates = TRUE, check.names = TRUE, colNames = TRUE,
rowNames = FALSE, skipEmptyRows = TRUE, skipEmptyCols = TRUE, rows = NULL, sep.names = ".",
na.strings = "NA", fillMergedCells = FALSE, cols = 1:27,
getOption("openxlsx.datetimeFormat", "mm/dd/yyyy hh:mm"))
但是得到这个错误: Region 'mm/dd/yyyy hh:mm' not found!
根据其他问题的答案,大多数人建议切换到 readxl::read_excel
- 这确实有效,但打开文件需要花费大量时间。有没有人对尝试让 read.xlsx 正确读取日期有什么想法?
我的 excel 数据的片段:
如果时间戳是数字,您可以手动转换它,例如使用包 datetimeutils
中的函数 convert_date
(我维护):
library("datetimeutils")
x <- 44038.8394469843
convert_date(x, type = "excel", fraction = TRUE)
## [1] "2020-07-26 20:08:48 CEST"
如果您需要特定时区,您也可以指定:
convert_date(x, type = "excel", fraction = TRUE, tz = "America/New_York")
## [1] "2020-07-26 20:08:48 EDT"