如何将时间变量重新编码为R(数据帧)中的数字



我有一个数据帧,记录了几年的月球开始时间和结束时间。我从这两列中计算了月亮的中间时间,并使用以下代码删除了月亮中间时间(mm(中的日期信息,只保留hh:mm格式。

diel$mm <- as.POSIXct((as.numeric(diel$`moonend date time`) + as.numeric(diel$`moonstart date time`)) / 2, origin = '1970-01-01')
#mm=moonlight midpoint
diel$mm <-strftime(diel$mm, tz = "UCT", format = "%H:%M")
#delete the date info on the moonlight midpoint column 

然后我想把我的月亮中间时间重新编码成数字1-18。我的24小时是从上午9:45到第二天上午9:45。我每80分钟编码一次到一个时隙,例如,9:45到11:05被编码为"0";1〃;,11:05到12:25被编码为"0";2〃;,。。。。,8:25至9:45被编码为";18〃;。

我在dplyr中使用case_when来重新编码我的时间变量:

diel <- diel %>% mutate(mm = case_when(
mm > 9:45 & mm < 11:05 ~ "1",
mm > 11:05 & mm < 12:25 ~ "2",
mm > 12:25 & mm < 13:45 ~ "3",
mm > 13:45 & mm < 15:05 ~ "4",
mm > 15:05 & mm < 16:25 ~ "5",
mm > 16:25 & mm < 17:45 ~ "6",
mm >17:45 & mm < 19:05 ~ "7",
mm > 19:05 & mm < 20:25 ~ "8",
mm > 20:25 & mm < 21:45 ~ "9",
mm > 21:45 & mm < 23:05 ~ "10",
mm > 23:05 & mm < 0:25 ~ "11",
mm > 0:25 & mm < 1:45 ~ "12",
mm > 1:45 & mm < 3:05 ~ "13",
mm > 3:05 & mm < 4:25 ~ "14",
mm > 4:25 & mm < 5:45 ~ "15",
mm > 5:45 & mm < 7:05 ~ "16",
mm > 7:05 & mm < 8:25 ~ "17",
mm > 8:25 & mm < 9:45 ~ "18",
is.na(mm) ~ "na"))

#我在数据框中有nas,因为有一天没有月光。

我还没有完全理解这个案例——当代码:它看起来"~"数字"是我想重新编码的内容,但"~"让我很困惑。最后,这个代码没有成功(当然(。正如我在"~&";,我收到了不同的错误消息。

我不确定我的代码是否写错了,或者因为这个月亮的中间时间实际上包含日期信息(尽管我删除了日期信息(,所以它不能被重新编码到1-18。有没有其他方法可以把我的时间重新编码成1-18?有人能帮我吗?非常感谢。

您的时间格式看起来不正确,例如9:45。如果您在R控制台中编写它,它将生成一个从9到45的整数序列。调查适合您特定问题的时间格式。建议,在R控制台中键入help("DateTimeClasses"(,阅读一些代表日期和时间的重要类的文档。

最新更新