【问题标题】:Decimal hours in r (excluding todays date)r 中的小数小时(不包括今天的日期)
【发布时间】:2015-09-02 16:57:06
【问题描述】:

对于示例数据框:

light <- structure(list(daylight.hours = structure(c(62L, 22L, 60L, 58L, 
                                            34L, 37L), .Label = c("07:12:05", "07:14:41", "07:18:24", "07:28:59", 
                                                                  "07:31:07", "07:45:51", "07:48:08", "07:51:29", "07:52:06", "07:58:18", 
                                                                  "08:01:16", "08:07:25", "08:10:08", "08:18:16", "08:23:33", "08:27:03", 
                                                                  "08:30:36", "08:34:13", "08:41:35", "08:46:01", "08:53:52", "08:54:17", 
                                                                  "09:31:16", "09:35:29", "09:39:44", "10:27:19", "10:31:45", "10:36:12", 
                                                                  "11:53:41", "12:11:39", "12:16:10", "12:20:23", "12:34:10", "14:18:26", 
                                                                  "14:22:41", "14:26:55", "14:35:21", "14:39:49", "14:44:00", "14:48:09", 
                                                                  "14:54:29", "14:59:08", "15:03:18", "15:11:01", "15:15:38", "15:15:52", 
                                                                  "15:19:09", "15:58:22", "16:07:10", "16:08:33", "16:24:12", "16:27:14", 
                                                                  "16:42:57", "16:55:32", "16:57:52", "17:00:06", "17:02:15", "17:03:49", 
                                                                  "17:04:17", "17:05:24", "17:06:14", "17:06:53", "17:08:05", "17:09:38", 
                                                                  "17:11:04", "17:12:24", "17:13:26", "17:13:47", "17:14:22", "17:14:32", 
                                                                  "17:14:42", "17:14:44", "17:15:39", "17:15:40", "17:16:22", "17:16:51", 
                                                                  "17:17:55"), class = "factor"), school.id = c(4L, 4L, 4L, 4L, 
                                                                                                                14L, 14L)), .Names = c("daylight.hours", "school.id"), row.names = c(NA, 
                                                                                                                                                                                     6L), class = "data.frame")

我想创建另一个名为 d.daylight 的变量来将日光时间变量更改为小数。 (即 18:30:00 将读取 18.5)

当我使用以下内容时,它会自动输入今天的日期,这不是我所追求的(一切都在 24 小时以内)。

light$d.daylight <- as.POSIXlt(light$daylight.hours, format="%H:%M:%S")

谁能告诉我如何纠正这个问题?

【问题讨论】:

  • 如果你在发帖前light$daylight.hours &lt;- factor(light$daylight.hours),你的dput 会小很多。这里有很多空级别。
  • 您可以查看here
  • 为了到达@akruns 链接中的输入,您可以执行gsub("(\\d{2}):(\\d{2}).*", "\\1:\\2", light$daylight.hours) 之类的操作。或者只是为了好玩,你也可以这样做library(gsubfn) ; as.numeric(gsubfn("(\\d{2}):(\\d{2}).*", ~ as.numeric(x) + round(as.numeric(y)/60, 2), as.character(light$daylight.hours)))

标签: r


【解决方案1】:

如果您需要处理时间(无日期),来自包 chron 的 times 函数非常有用。

library(chron)
light$d.daylight <- as.numeric(times(light$daylight.hours)) * 24
#  daylight.hours school.id d.daylight
#1       17:06:53         4  17.114722
#2       08:54:17         4   8.904722
#3       17:05:24         4  17.090000
#4       17:03:49         4  17.063611
#5       14:18:26        14  14.307222
#6       14:35:21        14  14.589167

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多