2013-07-03 24 views
5

我有一個.csv文件,其中包含4列數據和一分鐘間隔的日期/時間列。一些時間戳丟失,所以我試圖生成缺失的日期/時間,並將它們分配給Y列中的NA值。我以前使用完全相同的格式與其他.csv文件完成此操作,沒有問題。該代碼是:R/zoo:'order.by'中的索引條目不是唯一的

# 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:必須刪除數據/代碼,對不起!

+0

我試圖將其設置爲GMT,但沒有骰子。數據記錄在JST(日本標準時間)中,因此沒有DST。此外,我已成功在其他三個.csv文件上運行相同的代碼,格式完全相同,包括一個案例中的相同日期/時間範圍。這就是扔我 - 我不知道爲什麼這應該是不同的。 –

+0

我編輯了我的原始文章以包含我的文件(Dropbox鏈接)和完整的代碼。不過,我必須在解決問題後將其刪除。 –

+0

分別對數據的前半部分和第二半部分進行嘗試,並保持這種狀態,直到只有少數幾行數據才能重現問題。然後發佈。 –

回答

8

anyDuplicated(har10)告訴你是否有任何完整行重複。動物園警告有關索引,所以你應該運行anyDuplicated(har10$HAR.TS)sum(duplicated(har10$HAR.TS))將顯示幾乎有9,000個重複的日期時間。第一個副本在311811行左右,其中10/08/19 13:10出現兩次。

+0

謝謝!我還是R新手,但我不敢相信這很簡單。我現在正在收拾一天,但明天會檢查 - 我想你可能是對的。 –

+0

是的,這是有效的。我的數據又一次充滿了錯誤和重複 - 太棒了! :( 謝謝! –

1

,並處理重複的指標(見?zoo?aggregate.zoo

## zoo series with duplicated indexes 
z3 <- zoo(1:8, c(1, 2, 2, 2, 3, 4, 5, 5)) 
plot(z3) 

## remove duplicated indexes by averaging 
lines(aggregate(z3, index, mean), col = 2, type = "o") 

## or by using the last observation 
lines(aggregate(z3, index, tail, 1), col = 4)