绑定csv文件时导入大量数字

时间:2017-01-12 08:42:48

标签: r readr

尝试使用超过最大整数的列导入数据时遇到问题(.Machine $ integer.max = 2147483647)。使用readr的read_csv我相信它导入为NA而不是四舍五入。复杂性来自于尝试使用rbindlist导入多个csv。

这是我目前的设置:

 load_df_path <- file.path(".../dffolder") #path to folder
 df_path_files <- list.files <- (load_df_path, full.names = TRUE) #list files in path

 df <- rbindlist(lapply(df_path_files, read_csv)) # read in csvs using readr

如何编写最后一行来导入csvs并转换列&#34; amount&#34;字符而不是整数?

以下是我试过的一些没有运气的事情......

## This gets error: Error in switch(tools::file_ext(path)....
 df <- rbindlist(lapply(df_path_files, read_csv(df_path_files, col_types = list(amount = col_character())))) 


## recreate read_csv and changed col_types = NULL to the above but getting the warning
## Error in FUN(X[[i]], ...) : could not find function "read_delimited"

tl; dr - 在将特定列更改为字符格式或int64时需要帮助导入csv列表。

谢谢。

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,只是语法......

df_list <- lapply(df_path_files, read_csv, col_types = cols(amount = col_character()))
df <- rbindlist(df_list)

col_types期待NULL或由cols创建的内容。请参阅?read_csv?cols

另一个想法:也许强制执行numeric代替int可能是一个解决方案:使用cols(amount = col_double()) 看这里: long/bigint/decimal equivalent datatype in R