R 语言中 CSV 文件的读写操作
CSV(Comma-Separated Values)是一种常见的数据存储格式,R 语言提供了多种函数支持 CSV 文件的读写操作。以下是详细的操作方法和代码示例。
读取 CSV 文件
read.csv() 是 R 语言中读取 CSV 文件的基础函数,默认以逗号作为分隔符。以下是一个简单示例:
data <- read.csv("example.csv", header = TRUE)
read.csv2() 适用于使用分号作为分隔符的 CSV 文件,常见于欧洲地区:
data <- read.csv2("example_european.csv", header = TRUE)
readr 包中的 read_csv() 函数性能更优,适合处理大型文件:
library(readr)
data <- read_csv("example.csv")
data.table 包的 fread() 函数读取速度最快:
library(data.table)
data <- fread("example.csv")
写入 CSV 文件
write.csv() 是基础写入函数:
write.csv(data, "output.csv", row.names = FALSE)
write_csv() 来自 readr 包,效率更高:
library(readr)
write_csv(data, "output.csv")
fwrite() 来自 data.table 包,速度最快:
library(data.table)
fwrite(data, "output.csv")
处理特殊字符和编码
指定文件编码可避免乱码问题:
data <- read.csv("example.csv", fileEncoding = "UTF-8")
处理包含引号的字段:
data <- read.csv("quoted.csv", quote = "\\"")
自定义分隔符和缺失值
读取以制表符分隔的文件:
data <- read.delim("example.tsv")
自定义缺失值标记:
data <- read.csv("example.csv", na.strings = c("NA", "", "NULL"))
大数据集处理技巧
分批读取大型文件:
library(readr)
data_stream <- read_csv_chunked("large.csv", callback = DataFrameCallback$new(function(x, pos) x))
性能对比示例
比较不同方法的读取速度:
library(microbenchmark)
microbenchmark(
base = read.csv("large.csv"),
readr = read_csv("large.csv"),
data.table = fread("large.csv"),
times = 10
)
高级应用:处理不规则 CSV
使用 readLines() 预处理不规则文件:
lines <- readLines("irregular.csv")
clean_lines <- gsub("\\\\\\"", "", lines) # 移除多余引号
data <- read.csv(text = clean_lines)
与数据库交互
将 CSV 数据写入 SQLite 数据库:
library(RSQLite)
con <- dbConnect(SQLite(), "mydb.sqlite")
dbWriteTable(con, "mytable", data)
dbDisconnect(con)
可视化前处理
计算 CSV 数据的统计信息:
summary_data <- summary(data)
write.csv(summary_data, "summary_stats.csv")
以上代码示例涵盖了 R 语言中处理 CSV 文件的主要场景,从基础操作到高级技巧,可根据实际需求选择合适的方法。


