簡體   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