0928 chapter 8 readr

入门

  • readr将平面文件转换为数据框

read_csv()、read_csv2()、read_tsv()

read_csv()

  • read_csv() 一般使用数据第一行为列名称,使用skip = n跳过前n行,comment = #来丢弃所有#开头的行
  • col_names = FALSE
  • \n添加新行
  • col_names传递向量作为列名称
  • na设定使用哪些值表示缺失值

p101练习题

  1. read_delim()
  2. col_names, col_types, locale, na, quoted_na, trim_ws, n_max, guess_max, progress
  3. col_positions
read_csv("x,y\n1,'a,b'", quote = "'")
  1. 1️⃣Warning message:
    In rbind(names(probs), probs_f) :
    number of columns of result is not a multiple of vector length (arg 1)
    第一行只有两个数,自动丢弃最后一列
    2️⃣第二行自动缺失值替补
    3️⃣ 第二行自动缺失值替补
    4️⃣无误
    5️⃣1;3读在一起 ,使用read_csv2()读取

8.3 解析向量

parse_*()函数
-8种解析函数
parse_logical, parse_integer(), parse_double,parse_number(),parse_character(),parse_factor(),parse_datetime(),parse_date(),parse_time()

解析数值

不同地区的数值变大习惯不同,要统一化

parse_double("1,23", locale = locale(decimal_mark = ","))
parse_number("$100")

可忽略数值前后的文本

解析字符串

UTF-8
guess_encoding()帮助找出编码方式

因子 parse_factor()

  1. data_names()等
    2.设置为同一个符号后,会报错
    decimal_mark设为,,grouping_mark会默认为.,反之亦然
  2. 主要是默认时间和日期的格式
au_locale <- locale(date_format = "%d/%m/%Y")
parse_date("02/01/2006", locale = au_locale)
#> [1] "2006-01-02"

5.read_csv()读取逗号分隔文件
read_csv2()读取分号分隔文件

  • 欧洲:Latin script
  • 日本: JIS X 0208, Shift JIS, ISO-2022-JP
  • 中国: GB 2312, GBK, GB 18030
  • 韩国: KS X 1001, EUC-KR, ISO-2022-KR
  1. parse_date(d1, "%B %d, %Y")

8.4 解析文件

每个parse_xyz()函数都有对应的col_xyz()函数

  • 所有列作为字符向量读入,易诊断出问题
  • read_lines()按行读入字符向量
  • read_file()
  • write_csv()保存成csv文件时,类型信息丢失 write_tsv()
  • write_rds(), read_rds()
  • feather包实现快速二进制格式

推荐阅读更多精彩内容