【发布时间】:2020-03-21 09:47:36
【问题描述】:
我正在从excel 导入日期时间值,当在r 中转换datetime 时,有些结果很好,有些结果是错误的。这是我的原始数据(来自 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
如您所见,我得到了 4 次 32"(正确的),4 次 33" 也是正确的,但随后我得到 8 次 34" 错误(检查 excel 的原始值)。
我做错了什么?感谢您的帮助...
【问题讨论】:
-
您的第一个数据示例文本字符串中是否包含这些 excel 值?它们似乎比 Excel 允许的精度更高。
-
@RonRosenfeld 我明白你的意思。我使用了以下函数:read_excel() 来导入我的数据。你在这里看到的是我导入的结果。为什么这里的结果比我在 excel 中得到的更精确,这对我来说是模糊的。
-
我也不明白。如果将这些值作为数值输入 Excel,它们将四舍五入到小数点后十位。很明显,您的导入过程发生了一些有趣的事情。
标签: excel datetime r r excel datetime import posixct