2013-04-10 25 views
0

我們有以Excel格式和NAV爲管理器中的日期和管理者B CSV文件的日期和值的夫妻如下:如何合併包含在一個獨特的CSV

Date,Manager A,Date,Manager B 
41346.6666666667,100,40932.6666666667,100 
41347.6666666667,100,40942.6666666667,99.9999936329992 
41348.6666666667,100,40945.6666666667,99.9999936397787 
41351.6666666667,100,40946.6666666667,99.9999936714362 
41352.6666666667,100,40947.6666666667,100.051441180137 
41353.6666666667,100,40948.6666666667,100.04877283951 
41354.6666666667,100.000077579585,40949.6666666667,100.068400298752 
41355.6666666667,100.00007861475,40952.6666666667,100.070263374822 
41358.6666666667,100.000047950872,40953.6666666667,99.9661095940006 
41359.6666666667,99.9945012295984,40954.6666666667,99.8578245935173 
41360.6666666667,99.9944609274138,40955.6666666667,99.7798031949116 
41361.6666666667,99.9944817907402,40956.6666666667,100.029523604978 
41366.6666666667,100,40960.6666666667,100.14859511024 
41367.6666666667,99.4729804387476,40961.6666666667,99.7956029017769 
41368.6666666667,99.4729804387476,40962.6666666667,99.7023420799123 
41369.6666666667,99.185046151864,40963.6666666667,99.6124531927299 
41372.6666666667,99.1766469096966,40966.6666666667,99.5689030038018 
41373.6666666667,98.920738006398,40967.6666666667,99.5701493637685 
,,40968.6666666667,99.4543885041996 
,,40969.6666666667,99.3424528379521 

我們想創造一個動物園具有以下結構的對象[日期,經理A導航,經理B導航]。

讀取csv文件與後:

data = read.csv("...", header=TRUE, sep=",") 

我們設定的指標用於拆分對象,並使用lapply分裂

INDEX <- seq(1, by = 2, length = ncol(data)/2) 

data.zoo <- lapply(INDEX, function(i, data) data[i:(i+1)], data = zoo(data)) 

我堅持的事實,日期是在Excel中格式,並不知道如何解決這些問題。問題是否以正確的方式設置?

+0

我沒有答案,但我有兩個想法。你可能已經想到了這些想法。當我將Excel中的日期保存到csv中時,csv包含一個代表日期的字符串,而不是一個數字。字符串的格式取決於我如何格式化單元格以在Excel中顯示日期。也許你可以得到csv輸出,它更容易被R讀取爲日期。我的第二個想法是,Excel的數字格式必須遵循一套非常簡單的規則,這些規則可能是公開可用的,你可以編寫一個自定義函數來轉換爲R表示理解。 – Mars 2013-04-10 15:45:43

+0

問題在於csv文件是在內部生成的,它來自其他來源。 – 2013-04-10 15:47:43

+0

我認爲可能是這種情況。 – Mars 2013-04-10 15:58:00

回答

1

如果您只想將日期轉換爲正確的日期,您可以輕鬆地完成此操作。你需要知道的是起源日期。您的數字表示自原始日期以來已過去的整數和小數天數。通常這是1990年1月0日!去圖,但要小心,因爲我不認爲情況總是如此。你可以試試這個...

​​

如果你有興趣的保持時間,以及,你可以使用as.POSIXct,但你也必須指定時區(默認UTC);

data$Date <- as.POSIXct(data$Date, origin = "1899/12/30") 
head(data) 
#     Date Manager.A  Date.1 Manager.B 
# 1 2013-03-13 16:00:00  100 2012-01-24 100.00000 
# 2 2013-03-14 16:00:00  100 2012-02-03 99.99999 
# 3 2013-03-15 16:00:00  100 2012-02-06 99.99999 
# 4 2013-03-18 16:00:00  100 2012-02-07 99.99999 
# 5 2013-03-19 16:00:00  100 2012-02-08 100.05144 
# 6 2013-03-20 16:00:00  100 2012-02-09 100.04877 
相關問題