正如 Roland 在评论中指出的那样,您是否应该删除NA
值尚不清楚。如果有开始时间但抗生素时间有NA
,那么时间差也应该有NA
。如果两个时间都是NA
,那么时间差应该是NA
如果您要删除NA
结果中的所有值difftime
,那么您只会获得具有完整数据的那些行的结果,但是这些将不再与您的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>
由reprex 包(v2.0.1)创建于 2022-01-31