我有一个巨大的csv文件,它有一个具有大整数值的数字列。下面有一个样品。
0, 0, 11536375, 0, 1152921504606846976, 75962, 258238559
1, 0, 11536375, 1, 1152921504606846977, 609189, 1515555074
2, 0, 11536375, 2, 1152921504606846978, 609189, 1530344731我试着把列1,3,5:7读入R数据帧。为了提高效率,我决定使用sqldf,因为我已经使用sqldf读取其他数据源。问题是sqldf将列5截断为1.152922e+18,这更像是我需要加入另一个DF的索引。所以我需要确切的价值。我不认为罗的论点会有帮助。我确实需要读取一个比基数R所能处理的值更高的值。我认为INT64包可能会有所帮助,但已经存档了。关于如何在sqldf中读取大int,有什么建议吗?
通过将第5列指定为字符串,我将扫描用作工作。我现在得到了全部值,但是在联接/合并中使用它是没有效率的。如果以字符串形式读取是唯一的出路,那么我可以在sqldf中实现这一点吗?sqldf不支持“什么”和"colClasses“。我怎么能提到第5栏应该被视为字符串呢?
发布于 2014-04-23 16:21:41
试试这个:
library(sqldf)
# create test data
Lines <- "a, b, c, d, e, f, g
0, 0, 11536375, 0, 1152921504606846976, 75962, 258238559
1, 0, 11536375, 1, 1152921504606846977, 609189, 1515555074
2, 0, 11536375, 2, 1152921504606846978, 609189, 1530344731
"
cat(Lines, file = "testFile.dat")
DF <- read.csv.sql("testFile.dat", sql =
"select a, b, c, d, cast(e as text) e, f, g from file")给予:
> DF
a b c d e f g
1 0 0 11536375 0 1152921504606846976 75962 258238559
2 1 0 11536375 1 1152921504606846977 609189 1515555074
3 2 0 11536375 2 1152921504606846978 609189 1530344731https://stackoverflow.com/questions/22003517
复制相似问题