2013-05-29 54 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)。

相关问题