我如何从一系列丢弃date部分的POSIXct对象中提取时间? 例如,我有: times <- structure(c(1331086009.50098, 1331091427.42461, 1331252565.99979, 1331252675.81601, 1331262597.72474, 1331262641.11786, 1331269557.4059, 1331278779.26727, 1331448476.96126, 1331452596.13806), class = c("POSIXct", "POSIXt")) 这对应于这些date: "2012-03-07 03:06:49 CET" "2012-03-07 04:37:07 CET" "2012-03-09 01:22:45 CET" "2012-03-09 01:24:35 CET" "2012-03-09 04:09:57 CET" "2012-03-09 04:10:41 CET" "2012-03-09 06:05:57 CET" "2012-03-09 08:39:39 CET" "2012-03-11 07:47:56 CET" "2012-03-11 08:56:36 CET" 现在,我有一些在这些时间测量参数的值 val <- c(1.25343125e-05, 0.00022890575, 3.9269125e-05, […]
我相信R不正确地格式POSIXcttypes与小数秒。 我通过R-BUG提交这个作为一个增强请求,并被刷新为“我们认为当前的行为是正确的 – 删除了错误”。 虽然我非常感谢他们已经做的和继续做的工作,但是我想让其他人对这个问题有所了解,也许就如何更有效地说明问题提出build议。 这里是一个例子: > tt <- as.POSIXct('2011-10-11 07:49:36.3') > strftime(tt,'%Y-%m-%d %H:%M:%OS1') [1] "2011-10-11 07:49:36.2" 也就是说,tt被创build为POSIXct时间的小数部分.3秒。 当用十进制数字打印时,显示的数值是.2。 我用毫秒精度的时间标记工作了很多,这使我很头痛,时间往往比实际值低一个档次。 这是发生了什么事情:POSIXct是自纪元以来的浮点数。 所有的整数值都是精确处理的,但是在基数为2的浮点数中,与.3最接近的值比.3略小。 strftime()对格式%OSn的规定行为是向下取整到所要求的十进制数字,所以显示的结果是.2。 对于其他小数部分,浮点值略高于input的值,显示器给出了预期的结果: > tt <- as.POSIXct('2011-10-11 07:49:36.4') > strftime(tt,'%Y-%m-%d %H:%M:%OS1') [1] "2011-10-11 07:49:36.4" 开发者的观点是,对于时间types,我们应该总是舍入到要求的精度。 例如,如果时间是11:59:59.8那么打印格式为%H:%M应该是“11:59”而不是“12:00”, %H:%M:%S应该给“11: 59:59“不是”12:00:00“。 我同意整数秒和格式标志%S ,但我认为这种行为应该是不同的devise为小数部分秒的格式标志。 我希望%OSn在n = 0时使用从最近到最近的行为,而%S使用向下舍入,因此使用格式%H:%M:%OS0打印11:59:59.8会给出“12: 00:00" 。 这不会影响秒数的整数,因为这些总是精确地表示,但它更自然地处理小数秒的舍入误差。 这是如何处理小数部分的打印,例如C,因为整数铸造舍弃: double x = 9.97; printf("%d\n",(int) x); // […]