Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中打开包含日期和时间的excel文件_R_Excel_Date_Time - Fatal编程技术网

在R中打开包含日期和时间的excel文件

在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

如果已经有人问过我,我会提前道歉,但我已经尝试过不同的尝试,到目前为止没有任何效果

我希望使用以下方法打开一个大Excel文件(>21000行):

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"...