2013-05-29 55 views
0

我有一個數據的形式設置:(這只是一個例子)如何將無空格數據轉換爲R中的製表符分隔符?

1324501020 
3241030205 
4332020134 

其中每一行表示一組上的測試項目的被檢體的反應。 的數據存儲在一個文本文件(例如data.txt中),但我需要將它們轉換成矩陣格式,使得每個數字是發生在一個細胞,這樣的:

1 3 2 4 5 0 1 0 2 0 
3 2 4 1 0 3 0 2 0 5 
4 3 3 2 0 2 0 1 3 4 
換句話說

,所述最終數據集應該是一個數字矩陣,其中列包含對每個項目的響應,行是考生。 任何想法?

回答

5
x <- read.fwf(file = "c:\\whatever\\data.txt", width=c(1,1,1,1,1,1,1,1,1,1)) 

哦,並有一個美妙的旅程StackOverflow!

+0

感謝您的及時回覆!這是我第一次使用StackOverflow!我喜歡你的解決方案的重點是,有時我不知道項目的數量。有沒有辦法做到這一點,而不使用'寬度'? – 2013-05-29 19:34:24

+0

+1(特別是對於那個有先見之明的最後一行:-)。 – whuber

+0

@Amin據我所知,「寬度」是一個必要的參數。沒有告訴軟件何時停止,很難提供固定寬度的數據。我試圖用rep(1,10)替換它,但它似乎沒有工作。也許你可以參考「read.fwf」的幫助文件瞭解更多細節。 –

1

如果數據是在一個文本文件中,並且該文件只包含如圖所示的數據,那麼最好的方法可能是@Penguin_Knight描述的read.fwf方法。但是,如果文件中有其他數據字段不符合固定寬度格式,或者數據已被複制或以不同的方式抓取,以致它已經位於R中的字符向量中,那麼這裏有一些其他的數據字段選項。

您仍然可以使用read.fwf方法與textConnection

您可以使用strsplit函數將字符串拆分爲單個數字並使用as.numeric將它們轉換爲數字。

您可以使用gsubfn軟件包中的strapply函數來匹配個別數字並提取它們(並再次傳遞給as.numeric)。

相關問題