我有一个.csv格式的数据集。此数据包含类似时间戳的格式:
> head(HC_40,n=10)
obs_id SiteId Timestamp ForecastId Value
937757 5338068 40 03/07/2015 14:30 1002 6.997.984.367.355.440
937758 3210822 40 03/07/2015 15:30 1002 15.518.012.898.186.300
937759 412101 40 03/07/2015 16:30 1002 6.674.491.990.937.700
937760 1284142 40 03/07/2015 17:30 1002 4.920.282.615.641.480
937761 1083737 40 03/07/2015 18:30 1002 4.118.787.012.290.970
937762 4835789 40 03/07/2015 19:30 1002 17.199.203.354.454.000
937763 6108559 40 03/07/2015 20:30 1002 11.584.402.269.325.700
937764 5609878 40 03/07/2015 21:30 1002 14.093.340.266.945.500
937765 3869294 40 03/07/2015 22:30 1002 6.063.987.507.173.930
937766 3517578 40 03/07/2015 23:30 1002 80.017.658.455.307.200
但是,当我检查类型时,它是一个整数。这有什么解释吗?
> sapply(HC_40,typeof)
obs_id SiteId Timestamp ForecastId Value
"integer" "integer" "integer" "integer" "integer"
如何将此格式转换为时间戳?
我尝试过但失败了:
first--->dataTime<-as.Date.POSIXct(HC_40$Timestamp,format="%d/%m/%Y %H:%M")
second-->HC_40$Timestamp = as.Date(strptime(as.character(HC_40$Timestamp), "%d/%m/%Y/ %H:%M"))
它实际上不起作用,我的数据变为
> HC_40$Timestamp<-as.POSIXct(HC_40$Timestamp,format="%d/%m/%Y %H:%M")
> head(HC_40,n=10)
obs_id SiteId Timestamp ForecastId Value
937757 5338068 40 1970-01-01 07:00:00 1002 6.997.984.367.355.440
937758 3210822 40 1970-01-01 07:00:00 1002 15.518.012.898.186.300
937759 412101 40 1970-01-01 07:00:00 1002 6.674.491.990.937.700
937760 1284142 40 1970-01-01 07:00:00 1002 4.920.282.615.641.480
937761 1083737 40 1970-01-01 07:00:00 1002 4.118.787.012.290.970
937762 4835789 40 1970-01-01 07:00:00 1002 17.199.203.354.454.000
937763 6108559 40 1970-01-01 07:00:00 1002 11.584.402.269.325.700
937764 5609878 40 1970-01-01 07:00:00 1002 14.093.340.266.945.500
937765 3869294 40 1970-01-01 07:00:00 1002 6.063.987.507.173.930
937766 3517578 40 1970-01-01 07:00:00 1002 80.017.658.455.307.200
答案 0 :(得分:1)
您的数据输入过程可能会将它们作为因子变量导入,这些变量是整数类型变量。这也说明了为什么n typeof
是调查R对象结构的不好方法。请改为使用str
或class
。
所以,可能:
HC_40$Timestamp <- as.POSIXct(as.character(HC_40$Timestamp), # convert from factor
format = "%d/%m/%Y %H:%M")
不幸的是,在日期结束时使用年份值存储日期时间的格式并不适合将colClasses与其中一个read。*函数一起使用。他们需要作为字符或因素阅读,并使用as.POSIXct
或strptime
进行转换。
答案 1 :(得分:0)
解决方案应该像
一样简单HC_40$Timestamp <- as.POSIXct(HC_40$Timestamp, format = "%d/%m/%Y %H:%M")