關於我需要的短篇故事:我已經讀取了一個CSV文件,並且我想要取一些列並將它們存儲到變量中自己的數據框,然後將變量存儲到列表中。但是,當我使用c()
來做到這一點時,它只是將所有數據放在一個平面向量中。有沒有辦法獲得數據框的列表?如何製作數據幀的「列表」或「矢量」
較長的故事:我看過一個CSV文件,假設它看起來像這樣
,"Date","px high","px low","px last",,,,"Date","px high","px low","px last"
"eur curncy",03/Jan/2000,1.03,1.01,1.02,,,"gbp curncy",03/Jan/2000,1.64,1.61,1.64
,1/4/2000,1.03,1.02,1.03,,,,1/4/2000,1.64,1.63,1.64
,1/5/2000,1.04,1.03,1.03,,,,1/5/2000,1.65,1.64,"#N/A N/A"
,1/6/2000,1.04,1.03,1.03,,,,1/7/2000,1.65,1.64,1.65
當我存儲讀取的CSV文件和打印,它看起來像
Date px.high px.low px.last Date.1 px.high.1 px.low px.last
eur curncy 03/Jan/2000 1.03 1.02 1.03 03/Jan/2000 1.64 1.63 1.64
1/4/2000 1.03 1.02 1.03 1/4/2000 1.64 1.63 1.64
... etc.
變量
爲了避免混亂,我已經刮掉了很多這個例子的數據,但是這些數據還有更多的行和列。沿着這些列,他們在這些組中重複,每個組都有一個日期,px高等。沿着行,您或多或少會獲得與上面顯示的最後幾行相同的結果。
我最終想要進入每組數據,將它分成幾個月,計算每列每個月的平均值,並丟棄每日信息,然後爲每個組製作條形圖。但是,我需要解決以下問題:
- 日期的第一行與其他行的格式不同。第一行之後的所有行都是相同的格式。我可以通過在數據讀取爲
cur <- read.csv('C:\\file.csv', stringsAsFactors=FALSE)
,然後遍歷列很好解決這個問題我自己,在適當的地方分配
cur[1,col] <- as.character(as.date(cur[1,col], format='%d/%b/%Y'))
然後我可以格式化其餘的日期條目通過循環遍歷行然後列,基本上再次做同樣的事情。
- CSV文件中的一些條目包含字符串「#N/AN/A」,我發現它會強制R讀取該列中的每個其他條目,作爲字符串,以便我不能再對對象執行算術運算。只要扔掉那些有這些信息的數據行,我很好,但即使這樣做,列仍然是字符串。另外,如果我將這一行從其中一個組中排除,則我將所有其餘數據全部丟棄,這是我不想做的。
算術問題很容易解決,當我做算術時,我只是將一切都轉換爲數字。這可能效率低下,但它似乎運作良好。但是所有這些行的問題都在同一個數據框中,因此如果我扔掉一行,我也會丟棄該行的所有其他數據 - 有時組的日期不匹配。所以如果我在一個日期上扔掉一個有「#N/A N/A」的行,我會把其他日期丟給其他組,我不想要。因此,我能想到的最佳解決方案是將組分成自己的數據框,並將它們分開處理。
- 某些數據具有不匹配的日期。如果該日期不是由所有數據共享的,我希望基本上丟棄這些數據組中的任何一個日期。但是,我只想在所有組中的同一日期執行此操作 - 我不能只刪除一行,因爲該行可能與一個組中的一個日期對應,而另一個組中的另一個日期對應。所以看起來分裂團體似乎是要做的事情。
但是如果有人認爲有更好的方法去,讓我知道。
爲什麼CSV代碼不可用?我主要是從CSV文件中複製和剪切它。此外,你提供的數據不是它應該如何去的。當我打印稱爲'dat'的變量時,我應該得到一個不同的表格。我將編輯原文,以顯示它應該如何。 – Addem 2014-11-22 02:53:19
嗯,我沒有真的嘗試過,但是無論如何,你可以在你的數據上使用它。 @Addem查看編輯 – rawr 2014-11-22 02:59:18
所以在你的代碼中有一些很好的東西,我以前從未見過,肯定有助於格式化問題,所以謝謝。但是,我仍然不確定如何解決我最大的問題,即刪除數據的適當部分。例如,我希望能夠刪除第二組數據的第三行,因爲它有一個NA值。然後我想刪除第一組值的同一日期。然後,我還想刪除第一個組的第四個日期,因爲它包含日期2000-06-01,而其他日期沒有。 – Addem 2014-11-22 03:05:30