1 中文乱码问题
- 在Rstudio中,用 Import Dataset 导入,选择from Excel,利用readxl包导入excel 文件。
- 若Excel导入出现乱码,转换成 csv 尝试。将Excel文件另存为 csv 文件,csv文件的存放路径避免中文字符。在Rstudio中,用 Import Dataset 导入,选择from text(readr),导入 csv 文件。
若选中csv文件后显示乱码,尝试在Import Options中按Locale-Configure-Encoding-Other路径,键入GBK解决,或直接在代码中修改编码方式。
guess_encoding("example.csv")df <- read_csv("~/input/example.csv", locale = locale(encoding = "GBK"))
若仍显示乱码,尝试将 csv 文件用 windows 记事本打开,重新另存为,此时可选择编码方式为utf-8,将另存后的 csv 文件按以上方式重新导入。
- 若csv文件中的字符串包含逗号时, 为避免逗号分隔符识别错位,使用read_csv(x, quote = “‘“)。
R数据导出csv 文件时,为避免中文乱码,选择write_excle_csv而非write_csv。
df %>% write_excel_csv("output/example.csv")
R数据导出 excel 文件时,可使用 openxlxs 包设定导出风格。
2 类型转换错误:no trailing characters
readr导入数据时会自动转换类型,出现类型转换错误时,用problems 查找问题列,针对性修改 col_types
df <- read_csv("example.csv")# 出现no trailing characters问题时,查找存在类型转换错误的列problems(df) %>% select(col) %>% distinct()# 例如y列类型转换错误(如前 1000 列均为na值),自动转化为col_logical(),可尝试调整为col_character()或其他类型再次尝试导入df <- read_csv("example.csv",col_types = cols(x = col_double(),y = col_character(),z = col_skip()))
将类型先统一转换成character后,再进行类型转换
df <- read_csv("example.csv",col_types = cols(.default = col_character())) %>% type_convert()
利用data.table::fread读取数据(不自动转换类型),再转化成 tibble 格式
df <- fread("example.csv") %>% as.tibble()
3 导入建议
为避免类型转换错误、减少不必要的列导入,建议导入时修改col_types参数。
# 查看readr默认列类型,将cols_condense(df_spec)的列类型复杂到col_types中修改,col_skip()表明需舍弃的字段spec_csv("example.csv") %>% cols_condense()df <- read_csv("example.csv",col_types = cols(x = col_double(),y = col_character(),z = col_skip()))# 最佳建议# --------------------# 若显示字段不完整,可以尝试以下方式获得完整列类型spec_csv("example.csv") %>% str()# col_only仅保留申明的变量,舍弃其他变量df <- read_csv("example.csv",col_types = cols_only(x = col_double(),y = col_character()))
