【问题标题】:Error when I need to extract hour from time variable当我需要从时间变量中提取小时时出错
【发布时间】:2018-05-04 09:22:36
【问题描述】:

我有一个具有时间值的向量

> head(DataCRMSanoflore$Heure.Inscription)
[1] 12:59:45 10:57:12 13:46:39 13:08:26 11:00:21 13:25:13
20760 Levels:  00:00:12 00:00:17 00:00:18 00:00:27 00:00:32 00:00:38 00:00:42 00:00:48 00:00:51 00:00:53 00:00:55 00:01:00 00:01:07 ... Letellier

然后我需要提取每个值的小时。所以我使用了这个代码:

DataCRMSanoflore$HOURS_INSCR<-hour(hms(as.character(DataCRMSanoflore$Heure.Inscription)))

但我得到一个错误:

as.POSIXlt.numeric(x) 中的错误:必须提供“原点” 另外:警告信息: 在 .parse_hms(..., order = "HMS", quiet = quiet) 中: 部分字符串解析失败,或者所有字符串都是 NAs

提前谢谢

【问题讨论】:

  • 您可能会因为级别 "Letellier" 和其他“非时间变量”而收到此错误。
  • 一个简单的解决方案可能是substr(x, 1, 2)

标签: r date


【解决方案1】:

试试这个解决方案:

输入数据:

h<-c("12:59:45","10:57:12","13:46:39","13:08:26","11:00:21","13:25:13")

提取第一个值(小时)并将其合并为小时格式

hour(as.POSIXct(unlist(lapply(strsplit(h,":"),"[",1)),format="%H"))
[1] 12 10 13 13 11 13

【讨论】:

    【解决方案2】:

    vec<-c("12:59:45","10:57:12","13:46:39","13:08:26","11:00:21","13:25:13") 
    
    unclass(as.POSIXlt(vec,format = "%T"))$h
    [1] 12 10 13 13 11 13
    
    lubridate::hour(as.POSIXlt(vec,format = "%T"))
    [1] 12 10 13 13 11 13
    

    【讨论】:

      猜你喜欢
      • 2021-02-18
      • 2023-03-13
      • 2016-11-26
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2014-03-21
      相关资源
      最近更新 更多