CSV日期格式在导入到R后发生更改

CSV日期格式在导入到R后发生更改,r,csv,R,Csv,我尝试以日期格式导入csv: 3/1/2017 0:00 3/1/2017 1:00 3/1/2017 2:00 3/1/2017 3:00 3/1/2017 4:00 3/1/2017 5:00 但是,R中的日期格式显示为: 2017-03-01 00:00:00 2017-03-01 01:00:00 2017-03-01 02:00:00 2017-03-01 03:00:00 2017-03-01 04:00:00 2017-03-01 05:00:00 如何将csv作为原始格式读入

我尝试以日期格式导入
csv

3/1/2017 0:00
3/1/2017 1:00
3/1/2017 2:00
3/1/2017 3:00
3/1/2017 4:00
3/1/2017 5:00
但是,R中的日期格式显示为:

2017-03-01 00:00:00 2017-03-01 01:00:00 2017-03-01 02:00:00 2017-03-01 03:00:00 2017-03-01 04:00:00 2017-03-01 05:00:00
如何将
csv
作为原始格式读入R而不做任何更改?

它是“原始”格式,从某种意义上说,您可能正在查看
POSIXct
POSIXlt
对象。您可以使用
format()
strftime()
重新格式化日期和日期时间,但这将使它们成为字符

所以,只要使用datetime对象,就让它保持原样。如果需要报告,可以使用上述任何函数格式化字符串:

x <- "3/1/2017 3:00"
x1 <- as.POSIXct(x, format = "%d/%m/%Y %H:%M")
x1
# [1] "2017-01-03 03:00:00 CET"

strftime(x1, format = "%d/%m/%Y %H:%M")
# [1] "03/01/2017 03:00"

format(x1, format = "%d/%m/%Y %H:%M")
# [1] "03/01/2017 03:00"

x这就是R打印时间戳向量的方式。您的另一个选择是将其作为文本字符串读入(您可以使用
read.csv
colClasses
参数),但它将只是一个字符串,而不是一个R知道如何处理的好的datetime对象。您的建议很有效,但在我使用as.POSIXct重新格式化后,如果我使用:as.POSIXct(“2017-03-12 02:00”)我发现它显示为NA,format=“%Y-%m-%d%H:%m:%S”)。正如.POSIXct(“2017-03-12 03:00:00”,format=“%Y-%m-%d%H:%m:%S”)一样有效。原因是什么?@Jonnce我在
as.POSIXct()
中使用的格式是您的原始格式。在您的数据中,它已经是POSIXct或POSIXlt格式(您可以使用
class()
进行检查)。
as.POSIXct()
中的格式是字符串的输入格式,而
format
strftime
中的格式是输出格式。哦,我知道了,谢谢。但是当我运行时仍然得到NA:as.POSIXct(“2017年12月3日02:00:00”,format=“%m/%d/%Y%H:%m:%S”)你能帮我找出原因吗?@Jonnce我复制粘贴在我的R控制台中,得到了正确的结果。所以对我来说它是有效的。如果真的不是打字错误,你应该问一个新问题,包括你的操作系统的信息。日期和时间的解释不是由R完成的,而是由操作系统本身完成的。因此,它可能会因您运行的是Windows、Mac还是linux而有所不同。非常感谢输入和输出的格式参数,是的,2:00:00的问题是因为时区。