Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将时间变量重新编码为R(数据帧)中的数字_R_Dataframe_Datetime_Time_Recode - Fatal编程技术网

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

如何将时间变量重新编码为R(数据帧)中的数字,r,dataframe,datetime,time,recode,R,Dataframe,Datetime,Time,Recode,我有一个数据框,记录了几年来月球的开始时间和结束时间。我从这两列中计算了月亮中间时间,并使用以下代码从月亮中间时间(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 11:05

我有一个数据框,记录了几年来月球的开始时间和结束时间。我从这两列中计算了月亮中间时间,并使用以下代码从月亮中间时间(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 11:05&mm<12:25~“2”,
毫米>12:25和毫米<13:45~“3”,
mm>13:45&mm<15:05~“4”,
毫米>15:05毫米<16:25~“5”,
毫米>16:25毫米<17:45~“6”,
毫米>17:45&毫米<19:05~“7”,
毫米>19:05毫米<20:25~“8”,
毫米>20:25和毫米<21:45~“9”,
毫米>21:45&毫米<23:05~“10”,
毫米>23:05&毫米<0:25~“11”,
毫米>0:25毫米<1:45~“12”,
毫米>1:45&毫米<3:05~“13”,
mm>3:05&mm<4:25~“14”,
毫米>4:25毫米<5:45~“15”,
毫米>5:45毫米<7:05~“16”,
毫米>7:05毫米<8:25~“17”,
毫米>8:25毫米<9:45~“18”,
is.na(mm)~“na”))
#我在数据帧中有nas,因为有一天没有月光

我不完全理解这种情况下的代码:似乎“~”数字“”是我想重新编码的,但“~”之前的代码让我很困惑。最后,这段代码没有成功(当然)。由于我更改了“~”之前的部件,因此收到了不同的错误消息


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

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

您的时间格式看起来不正确,例如9:45。如果在R控制台中写入,它将生成9到45之间的整数序列。调查什么时间格式适合您的特定问题。建议,在R控制台中键入help(“DateTimeClass”),阅读有关表示日期和时间的一些重要类的文档。

您是否检查了lubridate包?我检查了lubridate包,但没有找到可以在数据框中使用的代码。我检查了period(),如.period(),但我发现它不适合我的情况。我遗漏了什么吗?您的时间格式不正确,例如9:45。如果在R控制台中写入,它将生成9到45之间的整数序列。调查什么时间格式适合您的特定问题。建议,在R控制台中键入
help(“DateTimeClass”)
,阅读一些代表日期和时间的重要类的文档。谢谢!我知道了!你是对的。我使用lubridate将9:45改为“H M S”格式,并使用一些计算将时间重新编码为数字。很高兴提供帮助。如果此答案解决了您的问题,请将以下内容标记为已接受。非常感谢。你检查过lubridate包吗?我检查过lubridate包,但没有找到可以在数据帧中使用的代码。我检查了period(),如.period(),但我发现它不适合我的情况。我遗漏了什么吗?您的时间格式不正确,例如9:45。如果在R控制台中写入,它将生成9到45之间的整数序列。调查什么时间格式适合您的特定问题。建议,在R控制台中键入
help(“DateTimeClass”)
,阅读一些代表日期和时间的重要类的文档。谢谢!我知道了!你是对的。我使用lubridate将9:45改为“H M S”格式,并使用一些计算将时间重新编码为数字。很高兴提供帮助。如果此答案解决了您的问题,请将以下内容标记为已接受。非常感谢。
diel$mm <-strftime(diel$mm, tz = "UCT", format = "%H:%M")
#delete the date info on the moonlight midpoint column 
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"))