我以前去過那裏,所以我知道你正在經歷什麼。
我有2條新聞給你,一個壞,一個好。壞一個我已閱讀,在這些類型的文件在SAS噸次,但從未在的R - 然而 好消息是我可以給你一些提示,這樣你就可以做出來的R.
所以策略如下:
1)您將讀取文件到一個數據幀,其中包含只有的單個列。這一欄是字符,並將保存 整行輸入文件。即如果文件中的最大行長度爲80,則長度爲80。
2)現在你有一個數據框,其中每條記錄等於輸入文件中的一行。在這一點上,你可能想要檢查你的文件中的數據幀與每行有相同的數字或記錄。
3)現在你可以使用grep
來擺脫關閉或只保留那些符合條件的(即與「客戶」)開頭字幕線。 你可能會發現在這裏真正有用的正則表達式。
4)你的數據框現在只有符合「客戶」模式和表模式 (即符合'Country'
或/\d{3} \d{8}/
或' Total'
開始)記錄。
5)你現在需要做的是創建一組變量,增加每找到「客戶」時間+1。所以group = 1會重複相同的值,直到找到'Customer 010343',其中group現在是group = 2。或者甚至更好的是,您的組可以是客戶ID,直到找到新的ID。你需要以某種方式保留該id,直到找到一個新的id。
從你幾乎做,你將能夠識別客戶和表格很容易的最後一步。您可能希望創建一個以表格格式輸出表格字符串的函數。
無論您是在單個表格中處理它們,還是將數據幀拆分爲n個數據幀來單獨處理它們都由您決定。
在SAS中,這是指針(@)和保留(保留語句)的概念,每條匹配條件的行可以與其他條件不同,因此您輸出的數據集已包含表格格式的列和客戶信息。
嗯,希望這可以幫助你。
因爲這是一個固定寬度的文件,所以使用'read.fwf()'會更好。 – Andrie
我不認爲''read.fwf''完全有助於所有標準方法。 – Altons