关于r中的chron时间匹配



我试图通过使用r中的时间列来匹配两个文件。因此,我选择chron-time来实现这一点。但当我尝试将"时间"列转换为chron时间时,我收到了警告消息,"在convert.dates(dates.,format=format[[1]],origin.=origin.(中:331个月超出了设置为NA的范围"我的数据如下,

Year Month Day Rain_mm                Time           chrontime
1   2019     1   1     0.6 01/01/2019 01:10:00 (01/01/19 01:10:00)
2   2019     1   2     0.0 02/01/2019 01:10:00 (02/01/19 01:10:00)
3   2019     1   3     0.0 03/01/2019 01:10:00 (03/01/19 01:10:00)
4   2019     1   4     0.0 04/01/2019 01:10:00 (04/01/19 01:10:00)
5   2019     1   5     0.0 05/01/2019 01:10:00 (05/01/19 01:10:00)
6   2019     1   6     0.0 06/01/2019 01:10:00 (06/01/19 01:10:00)
7   2019     1   7     3.4 07/01/2019 01:10:00 (07/01/19 01:10:00)
8   2019     1   8     5.8 08/01/2019 01:10:00 (08/01/19 01:10:00)
9   2019     1   9     0.4 09/01/2019 01:10:00 (09/01/19 01:10:00)
10  2019     1  10     0.0 10/01/2019 01:10:00 (10/01/19 01:10:00)
11  2019     1  11     0.2 11/01/2019 01:10:00 (11/01/19 01:10:00)
12  2019     1  12     2.8 12/01/2019 01:10:00 (12/01/19 01:10:00)
13  2019     1  13     2.6 13/01/2019 01:10:00             (NA NA)
14  2019     1  14     2.2 14/01/2019 01:10:00             (NA NA)
15  2019     1  15     3.2 15/01/2019 01:10:00             (NA NA)
16  2019     1  16     6.2 16/01/2019 01:10:00             (NA NA)
17  2019     1  17    12.6 17/01/2019 01:10:00             (NA NA)
18  2019     1  18     0.0 18/01/2019 01:10:00             (NA NA)
19  2019     1  19     0.0 19/01/2019 01:10:00             (NA NA)
20  2019     1  20     0.0 20/01/2019 01:10:00             (NA NA)
21  2019     1  21     7.4 21/01/2019 01:10:00             (NA NA)
22  2019     1  22     0.2 22/01/2019 01:10:00             (NA NA)
23  2019     1  23     0.0 23/01/2019 01:10:00             (NA NA)
24  2019     1  24     0.0 24/01/2019 01:10:00             (NA NA)
25  2019     1  25     0.0 25/01/2019 01:10:00             (NA NA)
26  2019     1  26     0.6 26/01/2019 01:10:00             (NA NA)
27  2019     1  27     7.6 27/01/2019 01:10:00             (NA NA)
28  2019     1  28     1.6 28/01/2019 01:10:00             (NA NA)
29  2019     1  29     0.0 29/01/2019 01:10:00             (NA NA)
30  2019     1  30     0.0 30/01/2019 01:10:00             (NA NA)
31  2019     1  31     0.0 31/01/2019 01:10:00             (NA NA)
32  2019     2   1     0.0 01/02/2019 01:10:00 (01/02/19 01:10:00)
33  2019     2   2     0.6 02/02/2019 01:10:00 (02/02/19 01:10:00)
34  2019     2   3     0.0 03/02/2019 01:10:00 (03/02/19 01:10:00)
35  2019     2   4     1.0 04/02/2019 01:10:00 (04/02/19 01:10:00)
36  2019     2   5     0.2 05/02/2019 01:10:00 (05/02/19 01:10:00)
37  2019     2   6     3.6 06/02/2019 01:10:00 (06/02/19 01:10:00)
38  2019     2   7     1.8 07/02/2019 01:10:00 (07/02/19 01:10:00)
39  2019     2   8     3.0 08/02/2019 01:10:00 (08/02/19 01:10:00)
40  2019     2   9     6.8 09/02/2019 01:10:00 (09/02/19 01:10:00)
41  2019     2  10     3.4 10/02/2019 01:10:00 (10/02/19 01:10:00)
42  2019     2  11     0.6 11/02/2019 01:10:00 (11/02/19 01:10:00)
43  2019     2  12     0.0 12/02/2019 01:10:00 (12/02/19 01:10:00)
44  2019     2  13     0.0 13/02/2019 01:10:00             (NA NA)
45  2019     2  14     0.0 14/02/2019 01:10:00             (NA NA)
46  2019     2  15     0.0 15/02/2019 01:10:00             (NA NA)
......

我的代码是:

Dts <- with(DMIdata, paste(substring(Time, 1,2), substring(Time,4,5), substring(Time, 9, 10), sep='/'))    
hrs <- with(DMIdata, substring(Time, 13, 20))
DMIdata$chrontime <- chron(Dts,hrs)

我想知道,为什么13日之后的所有日期都被设定为NA,这是一种长期的转变?如何改进我的代码使其发挥作用?

谢谢你的帮助!

library(chron)

substring的问题是订单chron希望Date是?chron中指定的特定format

格式-日期格式可以是字符"的任何排列;d"m〃;,或";y";由分隔符(可能为空(定界,例如";m/d/y"d-m-y"ymd";,均有效;格式也可以是单词"的排列;天"月份;以及";年;(带有非空分隔符(,它产生月份名称,例如";年月日;产生";1992年4月20日"day mon year";产生";1992年4月20日";。

默认情况下,如果我们查看用法,它是mdy

chron(日期,时间,格式=c(日期="m/d/y",时间="h:m:s"(,out.format,原点。(

而OP的Dts以d/m/y为单位。我们可以在这里指定format

chron(Dts,hrs, format = c(dates = "d/m/y", times = "h:m:s"))
#[1] (01/01/19 01:10:00) (02/01/19 01:10:00) (03/01/19 01:10:00) (04/01/19 01:10:00) (05/01/19 01:10:00) (06/01/19 01:10:00)
#[7] (07/01/19 01:10:00) (08/01/19 01:10:00) (09/01/19 01:10:00) (10/01/19 01:10:00) (11/01/19 01:10:00) (12/01/19 01:10:00)
#[13] (13/01/19 01:10:00) (14/01/19 01:10:00) (15/01/19 01:10:00) (16/01/19 01:10:00) (17/01/19 01:10:00) (18/01/19 01:10:00)
#[19] (19/01/19 01:10:00) (20/01/19 01:10:00) (21/01/19 01:10:00) (22/01/19 01:10:00) (23/01/19 01:10:00) (24/01/19 01:10:00)
#[25] (25/01/19 01:10:00) (26/01/19 01:10:00) (27/01/19 01:10:00) (28/01/19 01:10:00) (29/01/19 01:10:00) (30/01/19 01:10:00)
#[31] (31/01/19 01:10:00) (01/02/19 01:10:00) (02/02/19 01:10:00) (03/02/19 01:10:00) (04/02/19 01:10:00) (05/02/19 01:10:00)
#[37] (06/02/19 01:10:00) (07/02/19 01:10:00) (08/02/19 01:10:00) (09/02/19 01:10:00) (10/02/19 01:10:00) (11/02/19 01:10:00)
#[43] (12/02/19 01:10:00) (13/02/19 01:10:00) (14/02/19 01:10:00) (15/02/19 01:10:00)

数据

DMIdata <- structure(list(Year = c(2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 
2019L, 2019L, 2019L, 2019L), Month = c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Day = c(1L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
15L), Rain_mm = c(0.6, 0, 0, 0, 0, 0, 3.4, 5.8, 0.4, 0, 0.2, 
2.8, 2.6, 2.2, 3.2, 6.2, 12.6, 0, 0, 0, 7.4, 0.2, 0, 0, 0, 0.6, 
7.6, 1.6, 0, 0, 0, 0, 0.6, 0, 1, 0.2, 3.6, 1.8, 3, 6.8, 3.4, 
0.6, 0, 0, 0, 0), Time = c("01/01/2019 01:10:00", "02/01/2019 01:10:00", 
"03/01/2019 01:10:00", "04/01/2019 01:10:00", "05/01/2019 01:10:00", 
"06/01/2019 01:10:00", "07/01/2019 01:10:00", "08/01/2019 01:10:00", 
"09/01/2019 01:10:00", "10/01/2019 01:10:00", "11/01/2019 01:10:00", 
"12/01/2019 01:10:00", "13/01/2019 01:10:00", "14/01/2019 01:10:00", 
"15/01/2019 01:10:00", "16/01/2019 01:10:00", "17/01/2019 01:10:00", 
"18/01/2019 01:10:00", "19/01/2019 01:10:00", "20/01/2019 01:10:00", 
"21/01/2019 01:10:00", "22/01/2019 01:10:00", "23/01/2019 01:10:00", 
"24/01/2019 01:10:00", "25/01/2019 01:10:00", "26/01/2019 01:10:00", 
"27/01/2019 01:10:00", "28/01/2019 01:10:00", "29/01/2019 01:10:00", 
"30/01/2019 01:10:00", "31/01/2019 01:10:00", "01/02/2019 01:10:00", 
"02/02/2019 01:10:00", "03/02/2019 01:10:00", "04/02/2019 01:10:00", 
"05/02/2019 01:10:00", "06/02/2019 01:10:00", "07/02/2019 01:10:00", 
"08/02/2019 01:10:00", "09/02/2019 01:10:00", "10/02/2019 01:10:00", 
"11/02/2019 01:10:00", "12/02/2019 01:10:00", "13/02/2019 01:10:00", 
"14/02/2019 01:10:00", "15/02/2019 01:10:00")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", 
"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46"
))

最新更新