我正在用Python编写数据收集代码。我想生成一个尽可能容易导入R的数据框文件。我可以完全控制我的Python代码将产生什么,并且我想避免在R端进行不必要的数据处理,例如将列转换为因子/数字向量等。另外,如果可能的话,我想在R端尽可能简单地导入数据,最好是通过使用单个参数文件名调用单个函数。
我应该如何将数据存储到文件中以实现这一目标?
答案 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保存。