我需要一个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下。
同样适用于其他日期。
答案 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)
}