2012-02-20 45 views
2

編輯:如何格式化(a)CSV文件中的數據以便可以輕鬆導入到R中?

所以,這種格式將工作:

featureID charge xcoordinate ycoordinate 
1   2   5105.9217  336.125209180674 
1   2   5108.7642  336.124751115092 
2   0   2434.9217  145.893331325278 

但是如果我有連結多個值兩列。說柱質量有機器和鏈接的質量和列看起來像這樣

MachineQuality 
[[{1:1224}, {2:3453}], [{1:2242}, {2:4142}] 

現在,如果我想拆分像我與凸形輪廓的座標做我需要2行,而不是1,但不會,我需要2行,每行已在(SO 4,因爲已經有2個額外的座標)是這樣的:

featureID charge xcoordinate ycoordinate   quality1 quality2 
1   2   5105.9217  336.125209180674 1224  3453 
1   2   5105.9217  336.125209180674 2242  4142 
1   2   5108.7642  336.124751115092 1224  3453 
1   2   5108.7642  336.124751115092 2242  4142 
[...] 

它會是這樣?


我對R很陌生,我的知識並沒有比知道如何製作矢量和一些簡單的情節更進一步。我將在接下來的幾個月裏使用R進行一個實習項目,在此期間,我將(希望)學習一些R的內容。然而,在我開始之前,我需要產生我的數據去做統計。我需要事先知道如何格式化我的輸出CSV數據,以便在開始進行R分析時可以輕鬆讀取它。

我被要求做的一件事是從數據中提取一個CSV文件,以便它可以被R讀入。用R導入的CSV文件示例我見過都是這樣的

featureID Charge value 
1   2   10 
2   0   9 

但是,我的數據主要是由其值包含多個值的列組成。澄清: 作爲一個例子,我的數據存在「功能」,其中的其他信息具有「凸起」。這個凸包由成對的x和y座標組成。因此,我可能會對數據(只顯示兩個座標,可以是很多)

featureID Charge Convexhull 
1   2   [[{'y': '336.125209180674'}, {'x': '5105.9217'}], [{'y': '336.124751115092'}, {'x': '5108.7642'}]] 

是否有可能在一個CSV文件中得到這個,能夠R中正確讀取(以便配對的X並保存y座標)?如果是這樣,那麼CSV文件應該如何?例如,我已經看到了這個樣子與多個值CSV文件的示例:

featureID charge xcoordinate ycoordinate 
1   2   5105.9217  336.125209180674 
         5108.7642  336.124751115092 
2   0   2434.9217  145.893331325278 

但我找不到,如果這很容易被R.

進口

如果這不是可行一個CSV文件,是CSV文件輕鬆導入的獨立主鍵思想,如數據庫鏈接?

+3

只是不要在第二行留下'featureID'和'charge'空白;重複值1和2. – joran 2012-02-20 17:07:39

+0

但現在我只包含一列有多個值,如果我有更多,我應該爲每個可能的組合做一個不同的行? – 2012-02-20 17:39:51

+1

我不明白你的評論。也許如果你用一個更充分說明你的觀點的例子來編輯你的問題......? – joran 2012-02-20 18:08:55

回答

2

唯一關鍵的是你有一個獨特的字符來分隔你的數據列,並且每列的長度是相同的。只要你的最後一個例子中的第二行被填入,那將導入罰款。

您需要考慮在R中的數據之後想要如何處理數據,以決定您可能希望事先使用其他特殊格式。但是,只要列分隔符是一個唯一的字符並且列長度相等,那麼它將導入。

(如果你的條目用引號括起來,你可以違反唯一的分隔符要求,如果你想變得很花哨,你可以「導入」幾乎任何東西。但如果有人要求你格式化數據,那麼他們可能需要一個矩形的data.frame兼容佈局。他們可能需要在每列中有唯一的值(沒有列的點)。但是,這是你和他們之間)。

2

長與寬的形式。你的最後一個例子被稱爲long form(除了所有的單元格都應該被填充),你的第一個例子是大致寬的形式,如在?reshape頁面上討論的並且在該頁末尾的例子中所示。你可能想要堅持長的形式。有關替代方法,請參閱reshape2包。

保存&加載。請注意,如果您只寫出來稍後將其重新讀回R(而不是將其傳送給其他某個軟件),則可以使用saveload,它們根本不需要對對象進行任何更改。

JSON。考慮到您的示例形式的另一個可能性是您可能需要查看rjson package

+1

我不明白保存和加載。你的意思是如果我從R中保存它,然後重新加載它?因爲我使用python腳本製作CSV文件。 – 2012-02-20 17:36:32

+0

是的,我正在考慮從R寫出然後再讀回R的場景。如果你用Python寫出來,那麼** save&load **不相關,但其他兩個選項仍然可以考慮。對於第一個問題,你可以把它寫出來,然後在R中以長的形式處理它,或者根據你正在做什麼和你需要什麼將它轉換成寬的形式。 – 2012-02-20 18:11:05

相關問題