在R中打开包含日期和时间的excel文件
如果已经有人问过我,我会提前道歉,但我已经尝试过不同的尝试,到目前为止没有任何效果 我希望使用以下方法打开一个大Excel文件(>21000行):在R中打开包含日期和时间的excel文件,r,excel,date,time,R,Excel,Date,Time,如果已经有人问过我,我会提前道歉,但我已经尝试过不同的尝试,到目前为止没有任何效果 我希望使用以下方法打开一个大Excel文件(>21000行): myData@Parfait明白了: openxlsx::convertToDateTime(myData$Begin.Date+myData$Begin.Time) 例如: myData <- data.frame(Begin.Date = 43000:43010, Begin.Time = seq
myData@Parfait明白了:
openxlsx::convertToDateTime(myData$Begin.Date+myData$Begin.Time)
例如:
myData <- data.frame(Begin.Date = 43000:43010,
Begin.Time = seq(0,1,0.1))
openxlsx::convertToDateTime(myData$Begin.Date+myData$Begin.Time)
[1] "2017-09-22 00:00:00 CEST" "2017-09-23 02:24:00 CEST" "2017-09-24 04:48:00 CEST" "2017-09-25 07:12:00 CEST"
[5] "2017-09-26 09:36:00 CEST" "2017-09-27 12:00:00 CEST" "2017-09-28 14:24:00 CEST" "2017-09-29 16:48:00 CEST"
[9] "2017-09-30 19:12:00 CEST" "2017-10-01 21:36:00 CEST" "2017-10-03 00:00:00 CEST"
考虑添加两个数字向量,并使用在POSIXct
类型中呈现正确的日期时间格式。这是因为R没有明确的时间
类型(尽管它有日期
)。但是使用POSIXct
可以同时携带这两个组件,并且仍然可以运行日期或时间级别的操作
myData <- read.xlsx("/path/to/myWorkbook.xlsx", sheet = 1, colNames = TRUE)
myData$Begin.DateTime <- with(myData, convertToDateTime(Begin.Date + Begin.Time))
myData$End.DateTime <- with(myData, convertToDateTime(End.Date + End.Time))
开始时间是数字还是字符?lubridate::seconds_to_period(86400*0.5)给我一个“12H 0M 0S”,但lubridate::seconds_to_period(86400*“0.5”)给我一个错误它是数字。R接受它,但我在列中没有看到任何更改,值仍然在[0,1]范围内。抱歉,我不明白为什么,但它仍然不起作用。列中的所有值开始。时间仍在0和1之间。您是否看到数据与我更新的示例之间的差异?根据r
标记(悬停或单击查看):请提供最小值和所需输出。对数据使用dput()
,并使用library()
calls.Ok指定所有非基本包。参见我的问题编辑:)输入数据的示例将非常有用:dput(head(myData,3))参见我的问题编辑我下面的回答是否没有解决建议使用convertToDateTime
的问题?剩下的问题是什么?请记住,R本身没有时间
类型(不同于日期
)。
> myData <- read.xlsx("....xlsx", sheet = 1, colNames = TRUE)
> myData$Begin.Date <- with(myData, convertToDateTime(Begin.Date))
> myData$End.Date <- with(myData, convertToDateTime(End.Date))
> myData$Begin.Time <- with(myData, convertToDateTime(Begin.Time))
> myData$End.Time <- with(myData, convertToDateTime(End.Time))
> head(myData, 2)
xxxxx yyyyy zzzzz aaaaa bbbbb nnnnnn qqqqq ssssss
1 xxx yyy zzz aaa yyyyyy tttttt B rrr
2 xxx yyy zzz aaa yyyyyy tttttt B rrr
kkkkkk mmmmmm ooooo Begin.Date Begin.Time End.Date End.Time
1 u yyy y 2019-01-01 1899-12-30 2019-01-29 1899-12-30
2 u yyy y 2019-01-01 1899-12-30 2019-01-29 1899-12-30
dput(head(myData,3))
structure(list(Sample_ID = c("...", "...", "..."), Locality.Name = c("...", "...", "..."), Code = c("...", "...", "..."), Catchment = c("...",
"...", "..."), Decimal.Latitude = c(..., ..., ...), Decimal.Longitude = c(..., ..., ...), Sample.type = c("...",
"...", "..."), Sample.Treatment = c(".", ".", "."), Chemicals = c("...", "...", "..."), Apparatus.Type = c(".", ".", "."),
Begin.Date = c(43466, 43466, 43466), Begin.Time = c(0, 0, 0), End.Date = c(43494, 43494, 43494), End.Time = c(0, 0, 0), Value = c(..., ..., .), Value.Type = c("A", "A", "A"), Measuring.Unit = c("...", "...", "..."), Uncertainty.Value = c(..., .., ..), Uncertainty.Type = c(".", ".","."), Uncertainty.Unit = c("...", "...", "..."), Laboratory = c("...", "...", "..."), class = "data.frame")
openxlsx::convertToDateTime(myData$Begin.Date+myData$Begin.Time)
myData <- data.frame(Begin.Date = 43000:43010,
Begin.Time = seq(0,1,0.1))
openxlsx::convertToDateTime(myData$Begin.Date+myData$Begin.Time)
[1] "2017-09-22 00:00:00 CEST" "2017-09-23 02:24:00 CEST" "2017-09-24 04:48:00 CEST" "2017-09-25 07:12:00 CEST"
[5] "2017-09-26 09:36:00 CEST" "2017-09-27 12:00:00 CEST" "2017-09-28 14:24:00 CEST" "2017-09-29 16:48:00 CEST"
[9] "2017-09-30 19:12:00 CEST" "2017-10-01 21:36:00 CEST" "2017-10-03 00:00:00 CEST"
myData <- data.frame(Begin.Date = 43000:43010,
Begin.Time = seq(0,1,0.1))
as.POSIXct(as.Date(myData$Begin.Date,origin='1899-12-30'))+myData$Begin.Time*86400-3600*2
[1] "2017-09-22 00:00:00 CEST" "2017-09-23 02:24:00 CEST" "2017-09-24 04:48:00 CEST" "2017-09-25 07:12:00 CEST" "2017-09-26 09:36:00 CEST"
[6] "2017-09-27 12:00:00 CEST" "2017-09-28 14:24:00 CEST" "2017-09-29 16:48:00 CEST" "2017-09-30 19:12:00 CEST" "2017-10-01 21:36:00 CEST"
[11] "2017-10-03 00:00:00 CEST"
myData <- read.xlsx("/path/to/myWorkbook.xlsx", sheet = 1, colNames = TRUE)
myData$Begin.DateTime <- with(myData, convertToDateTime(Begin.Date + Begin.Time))
myData$End.DateTime <- with(myData, convertToDateTime(End.Date + End.Time))
myData <- read.xlsx("/path/to/myWorkbook.xlsx", sheet = 1, colNames = TRUE)
myData$DateTime <- with(myData, convertToDateTime(DATE + TIME))
head(myData, 10)
GROUP INT NUM CHAR BOOL DATE TIME DateTime
1 stata 8 127.666866 aEi TRUE 41834 0.45681916 2014-07-14 10:57:49
2 python 5 34.688263 H2o FALSE 36231 0.08267816 1999-03-12 01:59:03
3 julia 1 -3.964953 lsf TRUE 29694 0.08998882 1981-04-18 02:09:35
4 r 7 86.658479 Qvq FALSE 37560 0.42211337 2002-10-31 10:07:50
5 sas 10 -51.684354 Nwz FALSE 28965 0.68242260 1979-04-20 16:22:41
6 spss 2 57.717068 7mQ TRUE 29167 0.99936381 1979-11-08 23:59:05
7 python 11 101.840519 Qwa FALSE 29638 0.72010194 1981-02-21 17:16:56
8 python 6 27.396547 viO FALSE 27524 0.02126105 1975-05-10 00:30:36
9 stata 5 36.561838 Z01 FALSE 30932 0.74739582 1984-09-07 17:56:14
10 julia 6 -60.987695 jSP FALSE 32613 0.25558634 1989-04-15 06:08:02
str(myData)
'data.frame': 500 obs. of 8 variables:
$ GROUP : chr "stata" "python" "julia" "r" ...
$ INT : num 8 5 1 7 10 2 11 6 5 6 ...
$ NUM : num 127.67 34.69 -3.96 86.66 -51.68 ...
$ CHAR : chr "aEi" "H2o" "lsf" "Qvq" ...
$ BOOL : chr "TRUE" "FALSE" "TRUE" "FALSE" ...
$ DATE : num 41834 36231 29694 37560 28965 ...
$ TIME : num 0.4568 0.0827 0.09 0.4221 0.6824 ...
$ DateTime: POSIXct, format: "2014-07-14 10:57:49" "1999-03-12 01:59:03"...