R中POSIXct对象连续时间差如何指定计算单位
R语言POSIXct类型向量固定单位计算连续时间差的实现方法
核心实现方式
有两种常用的方案可以实现固定单位的连续时间差计算:
方案1:手动调用difftime计算相邻元素差值
直接对原向量做错位提取,传入difftime函数强制指定单位,完全避开diff的自动单位判断逻辑:
# 沿用示例数据 date.posixct <- seq(as.POSIXct("2021/1/1"), as.POSIXct("2021/1/10"), "days") date.posixct1 <- c(date.posixct[1], date.posixct) # 固定输出单位为天 diff_days <- difftime(date.posixct1[-1], date.posixct1[-length(date.posixct1)], units = "days") diff_days
输出结果:
Time differences in days [1] 0 1 1 1 1 1 1 1 1 1
你可以通过修改units参数指定为"secs"、"mins"、"hours"、"weeks"等需要的单位。
方案2:对diff返回结果直接修改单位属性
diff对POSIXct计算后返回的本身就是difftime类对象,你可以直接修改它的units属性强制切换单位:
diff_res <- diff(date.posixct1) # 强制修改单位为小时 units(diff_res) <- "hours" diff_res
输出结果:
Time differences in hours [1] 0 24 24 24 24 24 24 24 24 24
帮助文档说明解释
文档中提到的内容本质是说明:diff没有针对difftime的单独实现,就是基于默认的减法逻辑计算相邻元素差值,返回的结果还是标准的difftime类,所以不需要受diff自动选单位的限制,直接修改返回结果的单位属性,或者手动用difftime计算都可以。
内容的提问来源于stack exchange,提问作者user3631369
相关产品推荐
相关产品推荐

