从csv文件中提取Date列,并根据不同csv文件中的日期聚合行

时间:2016-04-12 08:54:16

标签: r csv split

我需要一个R脚本来将日期列与csv文件分开,并在不同的日期文件中聚合具有相同日期的行。

以下是我的csv文件的结构 -

dat <- read.table(text = 
                    "2012-04-02 10:01:23.757,BALL,2012-04-20 00:00:00.000,0,0,0,4199,4180,10,4260,30
                  2012-04-02 10:01:23.763,GLOVES,2012-05-18 00:00:00.000,0,0,0,4369,4356,20,4424,10
                  2012-04-03 10:01:25.200,PAD,2012-04-20 00:00:00.000,0,0,0,4199,4190,10,4258,30
                  2012-04-03 10:01:26.360,WICKETS,2012-04-20 00:00:00.000,0,0,0,4199,4190,10,4255,20
                  2012-04-04 10:01:27.503,BELLS,2012-04-20 00:00:00.000,0,0,0,4199,4190,10,4255,30
                  2012-04-04 10:01:28.650,SHOES,2012-05-18 00:00:00.000,0,0,0,4369,4358,10,4424,10
                  2012-04-05 10:01:29.773,KITBAG,2012-04-20 00:00:00.000,0,0,0,4199,4190,10,4252,10
                  2012-04-05 10:01:29.777,HELMET,2012-05-18 00:00:00.000,0,0,0,4369,4359,20,4424,10", sep = ",")

这只是csv文件的一小部分。 我希望这个完整的文件能够根据日期分开。

EX- BALL和GLOVES具有相同的日期,即2012-04-02,所以它应该在一个单独的文件20120402下。

同样适用于其他日期。

1 个答案:

答案 0 :(得分:0)

您必须事先将日期转换为?POSIXct。因此,您可以根据相应的列选择行。

dat$V1 <- as.POSIXct(dat$V1, format = "%Y-%m-%d %H:%M:%S")

setwd("/your/desired/output/path")
for (i in unique(format(dat$V1, "%Y-%m-%d"))){
  tmp <- dat[format(dat$V1, "%Y-%m-%d") == as.POSIXct(i, format = "%Y-%m-%d"),]
  write.table(data.frame(tmp), 
              file = paste(format(as.POSIXct(i), "%Y%m%d"), ".csv", 
              sep =""), sep = ",", 
              col.names = F)
}