【问题标题】:Excel time not always right convertedExcel 时间并不总是正确转换
【发布时间】:2020-03-21 09:47:36
【问题描述】:

我正在从 导入日期时间值,当在 中转换 时,有些结果很好,有些结果是错误的。这是我的原始数据(来自 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


【解决方案1】:

我认为当您转换为日期时,您会失去精度。通过将日期转换为秒并使用as.POSIXct,直接从excel日期更改为日期时间。

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

【讨论】:

  • 好多了。但是,如果我在整个数据集(约 4500 个条目)上运行统计工具(如 rle())并绘制直方图,我仍然会得到约 200“8”与约 800“4”。我在哪里失去精度?
  • @Julien 我不太确定完整的数据。似乎对您共享的数据有用。
  • 有什么方法可以与您分享我的整个数据集...?
猜你喜欢
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2022-06-29
  • 2018-12-07
  • 1970-01-01
  • 2011-07-06
相关资源
最近更新 更多