2012-02-20 66 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

相关问题