我有一个.csv文件,其中包含4列数据,以一分钟为间隔,相对于一列日期/时间。缺少一些时间戳,因此我试图生成丢失的日期/时间,并在Y列中为其分配NA值。之前,我已经使用格式完全相同的其他.csv文件完成了此操作,没有任何问题。代码是:
# read the csv file
har10 = read.csv(fpath, header=TRUE);
# set date
har10$HAR.TS<-as.POSIXct(har10$HAR.TS,format="%y/%m/%d %H:%M")
# convert to zoo
df1.zoo<-zoo(har10[,-1],har10[,1]) #set date to Index
# merge and generate NAs
df2 <- merge(df1.zoo,zoo(,seq(start(df1.zoo),end(df1.zoo),by="min")), all=TRUE)
# write zoo object to .csv file in Home directory
write.zoo(df2, file = "har10fixed.csv", sep = ",")
转换为POSIXct后,我的数据看起来像这样(一整年,或多或少),看起来还不错:
HAR.TS C1 C2 C3 C4
1 2010-01-01 00:00:00 -4390.659 5042.423 -2241.6344 -2368.762
2 2010-01-01 00:01:00 -4391.711 5042.056 -2241.1796 -2366.725
3 2010-01-01 00:02:00 -4390.354 5043.003 -2242.5493 -2368.786
4 2010-01-01 00:03:00 -4390.337 5038.570 -2242.7653 -2371.289
当我“转换为动物园”步骤时,出现以下错误:
Warning message:
In zoo(har10[, -1], har10[, 1]) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
我检查了重复的条目,但没有结果:
> anyDuplicated(har10)
[1] 0
有任何想法吗?我不知道为什么我在此文件上遇到此错误,但是它对于以前的错误有效。谢谢!
编辑:可复制的形式:
编辑2:对不起,必须删除数据/代码!
最佳答案
anyDuplicated(har10)
告诉您是否重复了完整的行。 zoo会警告该索引,因此您应该运行anyDuplicated(har10$HAR.TS)
。 sum(duplicated(har10$HAR.TS))
将显示几乎9,000个重复的日期时间。第一个重复项在第311811行附近,其中10/08/19 13:10
出现两次。
关于R/zoo : index entries in ‘order.by’ are not unique,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17447680/