2011-09-11 98 views
1

我想要將時間列作爲字符串讀入,然後對輸出進行子集合,但我無法將輸出tmp$Time轉換爲時間值。按時間彙總

數據是通過讀取csv文件創建的。

> head(Data) 
       Time F Z 
1 2011-09-09-06.54.00 1 489 
2 2011-09-09-06.54.00 3 678 
3 2011-09-09-06.54.00 6 890 
4 2011-09-09-07.54.00 8 345 
5 2011-09-09-07.54.00 10 567 

> strptime(Data$Time, format="%Y-%m-%d-%H.%M.%S") 
[1] "2011-09-09 06:54:00" "2011-09-09 06:54:00" 
[3] "2011-09-09 06:54:00" "2011-09-09 07:54:00" 
[5] "2011-09-09 07:54:00" 

> tmp <- aggregate(Data$Z ~ Data$Time,Data, sum) 

> head(tmp) 
      Data$Time Data$Z 
1 2011-09-09-06.54.00 2057 
2 2011-09-09-07.54.00 912 

> strptime(tmp[1], format="%Y-%m-%d-%H.%M.%S") 
Data$Time 
     NA 

我在轉換它之前對時間值使用聚合,因爲我無法讓它在時間上與時間相對應。

回答

2

這似乎是工作

Data <- data.frame(Time = c("2011-09-09 06:54:00", "2011-09-09 06:54:00", 
          "2011-09-09 06:54:00", "2011-09-09 07:54:00", 
          "2011-09-09 07:54:00"), 
        F = c(1, 3, 6, 8, 10), 
        Z = c(489, 678, 890, 345, 567) ) 
tmp <- aggregate(Data$Z ~ Data$Time,Data, sum) 

strptime(tmp[,1], format="%Y-%m-%d %H:%M:%S") 

生產

[1] "2011-09-09 06:54:00" "2011-09-09 07:54:00" 

我做了兩個改變你的最後一行:

  • tmp[,1]而不是tmp[1]
  • format="%Y-%m-%d %H:%M:%S"而非format="%Y-%m-%d-%H.%M.%S"