2

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

我应该如何将数据存储到文件中才能实现这一点?

4

2 回答 2

4

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

当您使用 将数据读入 Rread.csv时,除非您另外指定,否则字符串将被转换为因子,数字字段将被转换为数字。空值将转换为NA.

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

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

如果您有日期字段,则需要正确转换它们。如果您不指定日期或时间,R 不一定能识别它们(请参阅 参考资料?as.Date

如果您事先知道每列将是什么,您可以使用colClasses.

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

于 2013-02-17T06:10:34.043 回答
4

如果您的数据不是很大,特别是如果它不包含大量浮点值,那么使用 CSV 的 Brandon 的建议非常好,在这种情况下,CSV 格式效率极低。

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

这种另一种方法感觉有点矫枉过正,但您也可以使用pandas 的实验性 R 接口直接将内存中的数据帧传输到 R ,然后直接从 R 中保存。

于 2013-02-17T06:51:56.560 回答