readr包中read_csv()函数和write_csv()函数

一、R语言学习readr包

1.read_*系列函数

这些函数可将平面文件读入,并转换为数据框,以下函数有同样的语法

read_csv() 读取逗号分隔文件
read_csv2() 读取分号分隔文件
read_tsv() 读取制表符分隔文件
read_delim() 读取使用任意分隔符的文件
read_fwf() 读取固定宽度的文件
read_table() 读取固定宽度文件的变体,使用空白字符来分隔各列
下面以read_csv为例子:
以下三种读取方式均可
注意:第一种和第二种读取方式都是当前默认环境下csv文件

chic<-read_csv("chic02.csv")
chic<-readr::read_csv("chic02.csv")
chic <- readr::read_csv("https://raw.githubusercontent.com/z3tt/ggplot-courses/master/data/chicago-nmmaps.csv")

接下来我们看一下read_csv()函数的参数。

read_csv(file, col_names = TRUE, col_types = NULL, col_select = NULL, id = 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), name_repair = "unique", num_threads = readr_threads(), progress = show_progress(), show_col_types = should_show_types(), skip_empty_rows = TRUE, lazy = TRUE)
  • file : 该参数可以是要读取的文件路径,也可以是一个行内csv文件。对于以 .gz, .bz2, .xz, 或者.zip 为后缀的文件会被自动解压,对于以 http://, https://, ftp://, 或 ftps:// 开头的文件会被自动下载。

  • col_names = TRUE :默认使用读入数据的第一行作为列名。当该参数设置为FALSE时,第一行数据不再被设置为列名。也可以向该参数传递一个字符向量,以设置列名。

  • col_types = NULL :列的类型按前1000行数据估算。可以输入一个list(),手动设置列的类型,其中类型可以使用简写:c = character,i = integer,n = number,d = double,l = logical,f = factor,D = date,T = date time,t = time,? = guess,_ or - = skip

  • col_select = NULL :默认读入全部列。选择读入的列,可以是索引也可以是列名,两列以上使用c()或list()。
    id = NULL :无新增的列。可以设置为一个字符串,作为新增一列的列名,该列用于储存文件路径。对于读入多个文件数据或路径中有可用信息的场景比较有用。

  • locale = default_locale() :默认使用US-centric的默认值。可以自己设置。(没有啥用)

  • na = c("", “NA”) :默认读入数据中空白和NA表示缺失值。设定使用哪个或哪些值来表示文件中的缺失值。

  • quoted_na = TRUE :用quote包围的缺失值被看作缺失值。设置为FALSE时,quote包围的缺失值被看作字符串。不过stringr2.0版本中该参数被弃用。

  • quote = “”" :设置制定包围字符型数据的字符为双引号"。

  • comment = “” :设置注释的格式(在读入数据时,注释一律忽略)。如,可以设置comment = "#"来丢弃所有以#开头的行。

  • trim_ws = TRUE :在分析每块数据之前,从每个字段中修剪引导和尾随空白(默认空格和制表符)。

  • skip = 0 :默认数据全部读入。可以设置为任意数字,表示读取数据时跳过前几行。

  • n_max = Inf :最大读入行数默认为无穷大。可以根据需要自己设置最大读入行数。

  • guess_max = min(1000, n_max) :与前面的col_types相呼应,表示用来猜测列的类型的最大行数,默认为1000。

  • name_repair = “unique” :默认保证列名独一无二且非空。不同的值有不同的含义,其他可传递的参数值如下:"minimal"不对空列名进行填充,也不检查是否有重复列名;"check_unique"对空列名不进行填充,但是保证独一无二;“universal”: 使名字独一无二且符合语法。

  • num_threads = readr_threads() :分析和读取数据使用的线程数与readr包一致。

  • progress = show_progress() :是否显示进度与readr包的设置一致。可以设置readr.show_progress为FALSE来阻止进度显示。

  • show_col_types = should_show_types() :是否显示列的类型与readr包的设置一致。

  • skip_empty_rows = TRUE :默认空行会被跳过。如果设置为FALSE,空行会以各列均为NA的行为被读取并显示。

  • lazy = TRUE :在windows上运行的时候,会锁定该文件直到数据读取结束,如果出现相关问题可以设置为FALSE。(通常不需要,忽略这个参数就好)

2.write_*系列函数

readr包还提供了写入文件的函数。依然主要关注write_csv()函数。

write_csv(x, file, na = "NA", append = FALSE, col_names = !append, quote = c("needed", "all", "none"), escape = c("double", "backslash", "none"), eol = "\n", num_threads = readr_threads(), progress = show_progress(), path = deprecated(), quote_escape = deprecated())
  • x :待写入文件的数据,格式为一个数据框或一个tibble。
  • file :待写入文件的文件名或链接。
  • na = “NA” :缺失值默认填充NA。可以设置为其他字符。
  • append = FALSE :默认写入文件的方式为覆盖式写入。需要续写入文件则设置为TRUE。
  • col_names = !append :若覆盖式写入,则写入列名;若续写入文件,则不写入列名。可以手动设置是否写入列名。
  • eol = “\n” :行末默认使用换行符。
    其他的参数没有太大用处,忽略就可以。

参考资料

https://zhuanlan.zhihu.com/p/402685297

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值