R:阅读日期和时间问题

时间:2015-07-01 07:55:50

标签: r posixct

我在阅读日期和时间方面遇到了一些问题,我想知道为什么会遇到这些问题。问题出在我的Windows安装上。在我的UNIX安装上运行完全相同的脚本工作正常。

基本上,我想在一个包含数据和时间的文件中读取第二列,如下所示:

TrainData[[i]] = read.csv(TrainFiles[i],header=F, colClasses=c(NA,"POSIXct",rep(NA,8)))
    colnames(TrainData[[i]])=c("comp","time","s1","s2","s3","s4","r1","r2","r3","r4")

但是,只读取日期而不是时间,我的数据如下所示:

       comp       time  s1  s2  s3  s4  r1 r2 r3 r4
1     1 2009-08-18 711 630  69 600 689 20 40  1
2     5 2009-08-18 725 460 101 705 689 20 40  1
3     6 2009-08-18 711 505  69 678 689 20 40  1
4     1 2009-08-18 705 630  69 600 689 20 40  1
5     2 2009-08-18 734 516 101 671 689 20 40  1
6     3 2009-08-18 743 637  69 595 689 20 40  1
7     4 2009-08-18 730 577 101 633 689 20 40  1
8     2 2009-08-18 721 511 101 674 689 20 40  1
9     3 2009-08-18 747 563 101 642 689 20 40  1
10    4 2009-08-18 716 572 101 636 689 20 40  1

在UNIX上运行完全相同的cond返回时间和日期。 当我在同一个脚本中读入另一个文件时,在第一列的两个日期和时间中,我得到了正确的日期/时间格式:

TrainData[[i]]=read.csv(TrainFiles[i],header=F, colClasses=c("POSIXct","POSIXct",NA))
    colnames(TrainData[[i]])=c("start","end","fault")

返回

                 start                 end fault
1  2010-10-24 04:25:53 2010-10-24 11:22:33     6
2  2010-10-30 12:57:16 2010-11-02 12:29:54     6
3  2010-11-05 10:40:17 2010-11-05 11:59:51     6
4  2010-11-05 17:07:37 2010-11-06 14:30:01     6
5  2010-11-06 23:59:59 2010-11-07 00:14:49     6
6  2010-11-06 23:59:59 2010-11-07 00:14:49     6
7  2010-11-06 23:59:59 2010-11-07 00:14:49     6
8  2010-11-06 23:59:59 2010-11-07 00:14:49     6
9  2010-11-06 23:59:59 2010-11-07 00:14:50     6
10 2010-11-06 23:59:47 2010-11-07 00:14:51     6

实际上,我找到了最终有效的解决方案,但我想知道为什么我会遇到这些问题。 似乎我的Sys.timezone设置为" Europe / Berlin"。如果我将其设置为NA,则也将读入时间,即使用Sys.setenv(tz=NA)。如果我然后运行相同的代码,我的数据看起来像这样:

   comp                time  s1  s2  s3  s4  r1 r2 r3 r4
1     1 2009-08-18 18:12:00 711 630  69 600 689 20 40  1
2     5 2009-08-18 18:14:27 725 460 101 705 689 20 40  1
3     6 2009-08-18 18:14:31 711 505  69 678 689 20 40  1
4     1 2009-08-18 18:14:43 705 630  69 600 689 20 40  1
5     2 2009-08-18 18:14:47 734 516 101 671 689 20 40  1
6     3 2009-08-18 18:14:51 743 637  69 595 689 20 40  1
7     4 2009-08-18 18:15:00 730 577 101 633 689 20 40  1
8     2 2009-08-18 18:29:33 721 511 101 674 689 20 40  1
9     3 2009-08-18 18:29:37 747 563 101 642 689 20 40  1
10    4 2009-08-18 18:29:45 716 572 101 636 689 20 40  1

另一个文件仍然有时间,但现在总是两个小时不同。

这就是csv文件的样子(基本上是用逗号分隔的文本): 这是我的文件(基本上用逗号分隔的文字):

  

1,2009-08-18 18:12:00,711,630,69,600,689,20,40,1

     

5,2009-08-18 8:14:27,725,460,101,705,689,20,40,1

     

6,2009-08-18 18:14:31,711,505,69,678,689,20,40,1

     

1,2009-08-18 18:14:43,405,630,69,600,689,20,40,1

     

2,2009-08-18 8:14:47,734,516,101,671,689,20,40,1

     

3,2009-08-18 18:14:51,743,637,69,595,689,20,40,1

     

4,2009-08-18 8:15:00,730,577,101,633,689,20,40,1

     

2,2009-08-18 8:29:33,721,511,101,674,689,20,40,1

     

3,2009-08-18 8:29:37,747,563,101,642,689,20,40,1

     

4,2009-08-18 8:29:45,716,572,101,636,689,20,40,1

为什么我在阅读时遇到这些问题?我希望使用tz = NA不正确,但这是我发现工作的唯一方法。任何人都可以帮我弄清楚为什么在tz ="欧洲/柏林"? 通常建议在读取这样的文件时输入tz = NA吗?即使这似乎在时间阅读中起作用,tz =" NA"当我后来想要处理数据时会产生警告消息:

Warning message:
In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'NA'

任何人都可以帮我解释一下我得到的差异吗?

0 个答案:

没有答案