我知道之前已经问过answered here,但我没有得到所提供的解决方案。与OP相同,我正在读取SQL到R的输出,它自动将Date列识别为 factor ,如下所示:
Sample.Time..Trend.2.: Factor w/ 101 levels "","2013/10/24 00:19:00",..: 2 3 4 5 6 7 8 9 10 11 ...
根据原始解决方案,我已经使用as.Date
函数将因子转换为日期,但没有成功:
as.Date(df[1], format = "%Y/%m/%d %H:%M:%S")
我错过了什么吗?
编辑:可重现的代码(dput(df)
)
structure(list(Sample.Time..Trend.1. = structure(c(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,
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L,
45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L,
58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L,
71L, 72L, 73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L,
84L, 85L, 86L, 87L, 88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L,
97L, 98L, 99L, 100L, 101L, 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, 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, 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, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "2013/10/24 00:19:00",
"2013/10/24 00:49:00", "2013/10/24 01:18:59", "2013/10/24 01:48:59",
"2013/10/24 02:18:59", "2013/10/24 02:48:59", "2013/10/24 03:18:59",
"2013/10/24 03:48:59", "2013/10/24 04:18:58", "2013/10/24 04:48:58",
"2013/10/24 05:18:57", "2013/10/24 05:48:57", "2013/10/24 06:18:57",
"2013/10/24 06:48:57", "2013/10/24 07:18:58", "2013/10/24 07:48:58",
"2013/10/24 08:18:57", "2013/10/24 08:48:57", "2013/10/24 09:18:57",
"2013/10/24 09:48:57", "2013/10/24 10:18:57", "2013/10/24 10:48:57",
"2013/10/24 11:18:57", "2013/10/24 11:48:57", "2013/10/24 12:18:57",
"2013/10/24 12:48:57", "2013/10/24 13:18:56", "2013/10/24 13:48:56",
"2013/10/24 14:18:57", "2013/10/24 14:48:57", "2013/10/24 15:18:56",
"2013/10/24 15:48:56", "2013/10/24 16:18:56", "2013/10/24 16:48:56",
"2013/10/24 17:18:56", "2013/10/24 17:48:56", "2013/10/24 18:18:56",
"2013/10/24 18:48:56", "2013/10/24 19:18:55", "2013/10/24 19:48:55",
"2013/10/24 20:18:55", "2013/10/24 20:48:55", "2013/10/24 21:18:54",
"2013/10/24 21:48:54", "2013/10/24 22:18:55", "2013/10/24 22:48:55",
"2013/10/24 23:18:55", "2013/10/24 23:48:55", "2013/10/25 00:18:54",
"2013/10/25 00:48:54", "2013/10/25 01:18:53", "2013/10/25 01:48:53",
"2013/10/25 02:18:53", "2013/10/25 02:48:53", "2013/10/25 03:18:53",
"2013/10/25 03:48:53", "2013/10/25 04:18:53", "2013/10/25 04:48:53",
"2013/10/25 05:18:53", "2013/10/25 05:48:53", "2013/10/25 06:18:53",
"2013/10/25 06:48:53", "2013/10/25 07:18:53", "2013/10/25 07:48:53",
"2013/10/25 08:18:52", "2013/10/25 08:48:52", "2013/10/25 09:18:52",
"2013/10/25 09:48:52", "2013/10/25 10:18:51", "2013/10/25 10:48:51",
"2013/10/25 11:18:51", "2013/10/25 11:48:51", "2013/10/25 12:18:52",
"2013/10/25 12:48:52", "2013/10/25 13:18:52", "2013/10/25 13:48:52",
"2013/10/25 14:18:52", "2013/10/25 14:48:52", "2013/10/25 15:18:51",
"2013/10/25 15:48:51", "2013/10/25 16:18:51", "2013/10/25 16:48:51",
"2013/10/25 17:18:51", "2013/10/25 17:48:51", "2013/10/25 18:18:51",
"2013/10/25 18:48:51", "2013/10/25 19:18:51", "2013/10/25 19:48:51",
"2013/10/25 20:18:51", "2013/10/25 20:48:51", "2013/10/25 21:18:51",
"2013/10/25 21:48:51", "2013/10/25 22:18:50", "2013/10/25 22:48:50",
"2013/10/25 23:18:50", "2013/10/25 23:48:50", "2013/10/26 00:18:49",
"2013/10/26 00:48:49", "2013/10/26 01:18:49", "2013/10/26 01:48:49"
), class = "factor"), AHU.DJ_SATemp = c(23.5765, 23.5814, 23.5814,
23.5814, 23.5814, 23.5814, 23.5814, 23.5814, 23.5814, 23.5814,
23.5814, 23.5814, 23.5814, 23.5814, 23.5814, 23.5814, 22.92,
19.0991, 18.7197, 17.9586, 19.1917, 19.3438, 18.3791, 17.2845,
18.8174, 17.2029, 16.2401, 18.6221, 16.6308, 20.3029, 17.1108,
16.4354, 16.4104, 18.8174, 17.4799, 17.8511, 17.5776, 17.3822,
18.9923, 17.9586, 18.7197, 19.3769, 20.0901, 20.5982, 20.8141,
21.006, 21.0896, 21.1019, 21.1963, 21.1963, 21.1963, 21.1963,
21.1963, 21.1963, 21.1963, 21.1963, 21.1963, 21.1963, 21.1963,
21.1963, 21.1963, 21.1963, 21.1813, 21.1728, 20.8275, 18.3291,
17.9965, 18.3105, 17.391, 16.1228, 17.1886, 16.1424, 16.2401,
16.6308, 18.5116, 18.8174, 16.7254, 17.5142, 19.2843, 16.5331,
17.265, 17.3731, 20.5269, 20.91, 21.1775, 21.2907, 21.2907, 21.2907,
21.2907, 21.2907, 21.2314, 21.1963, 21.1963, 21.1171, 21.1019,
21.0642, 21.006, 21.006, 20.9973, 20.958, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("Sample.Time..Trend.1.",
"AHU.DJ_SATemp"), row.names = c(NA, -200L), class = "data.frame")
转换方法的结果:
as.Date(df[1], format = "%Y/%m/%d %H:%M:%S")
as.Date.default(df 1,格式=“%Y /%m /%d%H:%M:%S”)出错: 不知道如何将'df 1'转换为类“Date”
as.Date(as.character(df[1],"%Y/%m/%d %H:%M:%S"))
charToDate(x)出错: 字符串不是标准的明确格式
as.Date(factor(df[1]), format = "%Y/%m/%d %H:%M:%S")
sort.list(y)出错:'x'必须是'sort.list'的原子 你有没有在名单上打电话给'排序'?
答案 0 :(得分:5)
请注意,您的错误与as.Date(·)
无关,它与df[1]
中的miss indexig有关,应该是df[, 1]
,然后您可以使用as.Date(·)
< / p>
as.Date(df[, 1], format = "%Y/%m/%d %H:%M:%S")
查看?"["
答案 1 :(得分:-1)
自动将日期转换为所需格式的功能。原始日期是因子数据类型。
date_conv=function(date)
{
mydate = date
mydate = as.Date(mydate, format = "%d-%B-%Y") #changes format 16-Mar-17 to
0017-03-16
new_date=format(mydate, "20%y-%m-%d") #0017-03-16 to 2017-03-16
return(new_date)
}