R语言学习4–数据导入
基本导入及问题修复
用read_csv()函数可以将csv文件粗略地转换为R中的数据框格式。但是,有很多问题R不能自动解决,需要人工分析。
-
多种格式书写的缺失值无法自动判别->显式指定
na=c() -
列名不规范:跳过(
skip=n)或首行不做列名(col_names=FALSE),或者janitor::clean_names()进行启发式命名格式整理 -
列名推断:
read_csv()默认的推断逻辑是:
Does it contain only F, T, FALSE, or TRUE (ignoring case)? If so, it’s a logical.
Does it contain only numbers (e.g., 1, -4.5, 5e6, Inf)? If so, it’s a number.
Does it match the ISO8601 standard? If so, it’s a date or date-time.
Otherwise, it must be a string.
如:
read_csv("
logical,numeric,date,string
TRUE,1,2021-01-15,abc
false,4.5,2021-02-15,def
T,Inf,2021-02-16,ghi
")
#> # A tibble: 3 × 4
#> logical numeric date string
#> <lgl> <dbl> <date> <chr>
#> 1 TRUE 1 2021-01-15 abc
#> 2 FALSE 4.5 2021-02-15 def
#> 3 TRUE Inf 2021-02-16 ghi
如此逻辑导入的数据出现问题,用col_types强制指定。
写数据
write_csv()会将数据写成纯文本的csv格式。这个过程会损失所有的R数据结构中的列类别等信息。
可以写成rds或者parquet格式,通用且能够保留数据结构内部信息。
注:由于AI编程的趋势,无必要死记细节的语法,故本文较为简洁。重点在于处理非正常数据时能够发现问题并随机应变。文件导入过程的调整和数据清洗过程相辅相成,实践时应该注意。