R: проблемы с чтением даты и времени

У меня есть некоторые проблемы с чтением даты и времени надлежащим образом, и мне интересно, почему я получаю эти проблемы. Проблема только в моей установке Windows R. Выполнение точно такого же сценария в моей установке 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

Запуск точно такого же cond в UNIX вернул время и даты. Когда я читаю в другом файле в том же сценарии с датами и временем в двух первых столбцах, я получаю правильный формат даты / времени:

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 настроен на "Европа / Берлин". Если я установлю это на 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,705,630,69,600,689,20,40,1

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

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

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

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

3,2009-18-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 ответов

Другие вопросы по тегам