Excel数据组织在多个嵌套行中,可以R读取吗?

时间:2013-04-08 20:03:16

标签: r xlsx

请看图片。我已经开始使用R了,知道它是如何从Excel读取文件的,但是它能读取这样的格式吗?

http://www.flickr.com/photos/68814612@N05/8632809494/

(道歉,上传不适合我)

1 个答案:

答案 0 :(得分:0)

阐述评论中的一些内容:

如果将文件加载到Excel中,则可以将其另存为固定宽度或逗号分隔的文本文件。两者都应该很容易读入R.

以下内容可能已经很明显了。

(首先,一个问题:您确定无法以每行一组数据的格式获取数据吗?您获取的文件是否可能是从不同的文件格式生成的更有利于将数据加载到R?)

您是否应该开始重新安排R中的数据或者改为操作原始文本取决于您自然而然地(或者您周围可以提供帮助的人)。对我个人而言,我会在将文本文件加载到R之前将其重新排列在R之外。这对我来说最简单。 Perl是一个很好的语言用于此目的,但如果您可以访问它,或者使用强大的编辑器(如Vim或Emacs),您也可以使用Unix shell脚本。如果你没有偏好,我会建议Perl。如果您有任何重要的编程经验,您将能够了解您的需求。另一方面,你已经把它加载到R中,所以也许在那里处理数据会更好。

例如,您可以逐行执行循环文本文件的循环,并执行以下操作:

while (still have lines to read) {
  read first header line into an vector if this is the first time through the loop
   otherwise, read it and throw it away
  read data line 1 into an vector
  read second header line into vector if this is the first time
   otherwise, read it and throw it away
  read data line 2 into an vector
  read third header line into vector if this is the first time
   otherwise, read it and throw it away
  read data line 3 into an vector
  if this is first time through, concatenate the header vectors; store as next row
    in something (a file, a matrix, a dataframe, etc.)
  concatenate the data vectors you've been saving, and store as next row in same thing
}

write out the whole 2D data structure

或者如果标题永远不会改变,那么你可以在循环之前将它们直接嵌入到脚本中,无论如何都将它们抛出。这将使代码更清晰。或者分别读取文件的前几行以获取标题,然后使用单独的脚本来读取数据并将其添加到包含标题的文件中。 (标题可能在R中很有用,所以我建议将它们保存在文本文件的顶部。)