Время в Excel не всегда верно конвертируется - PullRequest
1 голос
/ 21 марта 2020

Я импортирую значения даты и времени из , и при конвертации в в некоторые результаты хороши, другие неверны. Вот мои необработанные данные (из excel):

         time excel
1   43033.35662037037
2   43033.35662037037
3   43033.35662037037
4   43033.35662037037
5   43033.35663194444
6   43033.35663194444
7   43033.35663194444
8   43033.35663194444
9   43033.35664351852
10  43033.35664351852
11  43033.35664351852
12  43033.35664351852
13  43033.35665509259
14  43033.35665509259
15  43033.35665509259
16  43033.35665509259
17  43033.35666666667
18  43033.35666666667
19  43033.35666666667
20  43033.35666666667
21  43033.35667824074

Вот мой код:

raw_time$`time excel` = as.numeric(raw_time$`time excel`)
r_time <- data.frame(as.Date(raw_time$`time excel`, origin = "1899-12-30"))
colnames(r_time)<-"time R"
r_time$`time R` <- as.POSIXct(r_time$`time R` , format =  "%d.%m.%Y %H:%M:%OS6")

И вот что я получаю:

        time excel                   time R

1   43033.35662037037   2017-10-25 10:33:32
2   43033.35662037037   2017-10-25 10:33:32
3   43033.35662037037   2017-10-25 10:33:32
4   43033.35662037037   2017-10-25 10:33:32
5   43033.35663194444   2017-10-25 10:33:33
6   43033.35663194444   2017-10-25 10:33:33
7   43033.35663194444   2017-10-25 10:33:33
8   43033.35663194444   2017-10-25 10:33:33
9   43033.35664351852   2017-10-25 10:33:34
10  43033.35664351852   2017-10-25 10:33:34
11  43033.35664351852   2017-10-25 10:33:34
12  43033.35664351852   2017-10-25 10:33:34
13  43033.35665509259   2017-10-25 10:33:34
14  43033.35665509259   2017-10-25 10:33:34
15  43033.35665509259   2017-10-25 10:33:34
16  43033.35665509259   2017-10-25 10:33:34
17  43033.35666666667   2017-10-25 10:33:36
18  43033.35666666667   2017-10-25 10:33:36
19  43033.35666666667   2017-10-25 10:33:36
20  43033.35666666667   2017-10-25 10:33:36
21  43033.35667824074   2017-10-25 10:33:37

Как Вы видите, я получаю четыре раза 32 "(что правильно), 4 раза 33", что тоже правильно, но затем я получаю 8 раз 34 ", что не так (проверьте исходные значения Excel).

Что я делаю не так? Ценим вашу помощь ...

1 Ответ

2 голосов
/ 21 марта 2020

Я думаю, что когда вы конвертируете в даты, вы теряете точность. Измените дату Excel на дату и время напрямую, конвертируя дни в секунды и используя as.POSIXct.

df$Time_R <- as.POSIXct(df$time_excel * 60 * 60 * 24, origin="1899-12-30")
...