R数据帧的首选数据格式

时间:2013-02-17 00:02:52

标签: python r dataframe

我正在用Python编写数据收集代码。我想生成一个尽可能容易导入R的数据框文件。我可以完全控制我的Python代码将产生什么,并且我想避免在R端进行不必要的数据处理,例如将列转换为因子/数字向量等。另外,如果可能的话,我想在R端尽可能简单地导入数据,最好是通过使用单个参数文件名调用单个函数。

我应该如何将数据存储到文件中以实现这一目标?

2 个答案:

答案 0 :(得分:4)

您可以使用http://docs.python.org/2/library/csv.html Python的csv模块将数据写入CSV,然后在R中使用read.csv就可以了。(参见?read.csv

使用read.csv将数据读入R时,除非另行指定,否则字符串将转换为因子,数字字段将转换为数字。空值将转换为NA

导入一些数据后,您应该做的第一件事就是查看它的?str,以确保包含的数据类符合您的期望。很多时候我犯了一个错误并在数字字段中混合了一个字符值,最后得到了一个因子而不是数字。

需要注意的一点是,您可能需要设置自己的NA字符串。例如,如果您有“ - ”,“。”或其他一些表示空白的字符,则需要使用na.strings参数(可以接受字符串向量,即{{1} })到c("-",".")

如果您有日期字段,则需要正确转换它们。如果没有指定它们是什么,R不一定能识别日期或时间(参见read.csv

如果您事先知道每个列的内容,可以使用?as.Date指定该类。

彻底阅读colClasses将为您提供更详细的信息。但我已经概述了一些常见问题。

答案 1 :(得分:4)

如果你的数据不是很庞大,布兰登建议使用CSV是很好的,特别是如果它不包含大量的浮点值,那么CSV格式的效率非常低。

更好地处理大数据集的选项可能是在pandas中构造一个等效的DataFrame并使用其工具转储到hdf5,然后以这种方式在R中打开它。例如,请参阅this question作为示例。

这种方法感觉有点矫枉过正,但你也可以使用pandas's experimental R interface直接将内存中的数据帧传输到R,然后直接从R保存。