如何通过两个POSIXct/POSIXt类时间变量计算分钟级住院时长
因为你这两列都是POSIXct/POSIXt类型的时间格式,可以直接用R内置的difftime()函数计算分钟差值,再转成数值型即可。
基础R实现
直接新增列的代码如下:
data$hospital_stay_min <- as.numeric(difftime(data$`Date of Discharge`, data$`Date of Surgery`, units = "mins"))
参数说明:
difftime()第一个参数填结束时间(出院日期),第二个参数填开始时间(手术日期)units = "mins"指定计算差值的单位为分钟as.numeric()将返回的difftime类对象转换为纯数值型,去除内置的单位属性
Tidyverse 实现(dplyr)
如果你习惯用tidyverse语法,可以用mutate()处理:
library(dplyr) data <- data %>% mutate( hospital_stay_min = as.numeric(difftime(`Date of Discharge`, `Date of Surgery`, units = "mins")) )
注意事项
如果要避免出现负值(比如存在部分记录出院时间早于手术时间的异常数据),可以在difftime()外包裹abs()取绝对值:
as.numeric(abs(difftime(data$`Date of Discharge`, data$`Date of Surgery`, units = "mins")))
内容的提问来源于stack exchange,提问作者Daniel Rodriguez
相关产品推荐
相关产品推荐

