我在计算两列之间的条件时间差,谁能解释一下为什么第一行以秒为单位返回,第三行以分钟为单位返回?数据帧以group
为单位进行分组.
library(dplyr)
source <- data.frame(
group = c(1,1,2),
start = as.POSIXct(c("2023-12-01 00:00:00", "2023-12-01 00:01:00", "2023-12-01 00:00:00")),
end = as.POSIXct(c("2023-12-01 00:01:00", "2023-12-01 00:01:00", "2023-12-01 00:01:00")),
boolean_flag = c(TRUE, TRUE, TRUE)
)
reprex <- source %>%
group_by(group) %>%
mutate(length = ifelse(boolean_flag, end - start, 0)) %>%
ungroup()
reprex
我知道,如果我切换到if_else()
,或者如果我使用带有unit="mins"
的difftime()
而不是简单的减法,这个问题就不会再出现了,但是我在这里试图理解为什么当前的代码会发生这种情况.如果删除结尾与开头相同的第二行,问题也会消失.
Edit:个
正如下面两个答案所指出的,使用此代码时,单位是特定于组的,它将被设置为适应组内存在的最小值.
下面更新的source
个数据框也有间隔1天和1小时的记录,这一点很清楚:
source <- data.frame(
group = c(1,1,2,3,3,4),
start = as.POSIXct(c("2023-12-01 00:00:00", "2023-12-01 00:01:00", "2023-12-01 00:00:00", "2023-12-01 00:00:00", "2023-12-01 00:00:00", "2023-12-01 00:00:00")),
end = as.POSIXct(c("2023-12-01 00:01:00", "2023-12-01 00:01:00", "2023-12-01 00:01:00", "2023-12-02 00:00:00", "2023-12-01 01:00:00", "2023-12-01 01:00:00")),
boolean_flag = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)
)
每组单位:
- 组1:秒(由第二行设置)
- 第二组:分钟数
- 第三组:小时数(由第五行设定)
- 第四组:天数