秒秒钟读取csv
大文件!!!
文章目录
最近在做毕业设计,遇到一个问题,在使用R读取上市公司数据时,由于文件太大导致读取数据比较慢,如果把文件拆解成多个文件读取又比较繁琐,查了查资料发现有解决办法。
大家比较熟知R读取csv格式文件的函数是R内置的read.csv()
,但除此之外还有其他的,比如readr
包的read_csv()
函数和data.table
包的fread()
函数。
1. csv三剑客
1.1 read.csv()
怎么用不详细说了就,说说弊病吧,最主要的是大文件读取速度慢,其次表头的留存问题和字符型数据乱码:
基本用法:
read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)
2.2 readr::read_csv() + dplyr::mutate_if()
read_csv()
函数需要加载readr
包,而用dplyr
包的mutate_if()
函数可以进行数据类型转换。
基本用法:
read_csv(file, col_names = TRUE, col_types = NULL,
locale = default_locale(), na = c("", "NA"), quoted_na = TRUE,
quote = "\"", comment = "", trim_ws = TRUE, skip = 0,
n_max = Inf, guess_max = min(1000, n_max),
progress = show_progress(), skip_empty_rows = TRUE)
例如读取mtcars数据集:
setwd("F://csv数据读取大比拼") #设置工作区间
#读取数据集
library(readr)
mtcars <- read_csv("mtcars.csv")
mtcars
#> # A tibble: 32 x 12
#> type mpg cyl disp hp drat wt qsec vs am gear carb
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>