繁体   English   中英

R 中的 Difftime 缺少时间:如何添加 'na.rm=TRUE'?

[英]Difftime in R with missing times: how to add 'na.rm=TRUE'?

我想使用 difftime() 来提取 as.posixct 两个日期/时间变量之间的差异。 但有时缺少一个(或两个)值(NA),如下所示。

Start time             Antibiotic time
2016-06-28 08:36:00    NA
2019-10-30 10:43:00    2019-10-30 10:11:56
NA                     NA

我想要:开始时间 - 抗生素时间 喜欢:Antibiotica$ABS <- difftime(Antibiotica$StartTime, Antibiotica$AntibioticTime, units=c("mins"), na.rm=TRUE)

但是现在,我得到一个错误。 我认为这是因为错误使用了 na.rm=TRUE。 如何以正确的方式添加它?

正如 Roland 在评论中指出的那样,您是否应该删除NA值尚不清楚。 如果有一个开始时间但抗生素时间是NA ,那么时间差也应该是NA 如果两个时间都是NA ,那么时间差应该是NA

如果您要删除生成的difftime中的所有NA值,那么您将只获得具有完整数据的那些行的结果,但是这些将不再与您的Antibiotica数据框匹配。 例如,在您的小示例数据框中,您只会得到一个非 NA 结果。 您将如何将其存储在列中?

从您的示例中,您的代码应该像这样工作:

Antibiotica$ABS <- difftime(Antibiotica$StartTime, Antibiotica$AntibioticTime)

Antibiotica
#>             StartTime      AntibioticTime           ABS
#> 1 2016-06-28 08:36:00                <NA>       NA mins
#> 2 2019-10-30 10:43:00 2019-10-30 10:11:56 31.06667 mins
#> 3                <NA>                <NA>       NA mins

如果您没有得到这个结果,您可能需要确保您的列采用实际的日期时间格式(例如,确保class(Antibiotica$StartTime)不是"character" )。

如果,一旦你有了计算并且你只想有完整的案例,你可以做

Antibiotica[complete.cases(Antibiotica),]
#>             StartTime      AntibioticTime
#> 2 2019-10-30 10:43:00 2019-10-30 10:11:56

使用的数据

Antibiotica <- structure(list(StartTime = structure(c(1467102960, 1572432180, NA), 
  class = c("POSIXct", "POSIXt"), tzone = ""), 
  AntibioticTime = structure(c(NA, 1572430316, NA), 
  class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA, -3L), 
  class = "data.frame")

Antibiotica
#>             StartTime      AntibioticTime
#> 1 2016-06-28 08:36:00                <NA>
#> 2 2019-10-30 10:43:00 2019-10-30 10:11:56
#> 3                <NA>                <NA>

代表 package (v2.0.1) 于 2022 年 1 月 31 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM