美文网首页
4-使用readr进行数据导入

4-使用readr进行数据导入

作者: 泥人吴 | 来源:发表于2019-09-29 22:18 被阅读0次

1.read_csv

read_csv() 读取逗号分隔文件
read_csv2() 读取分号分隔文件(这在用 , 表示小数位 的国家非常普遍)
read_tsv() 读取制表符分隔文件
read_delim() 可以读取使用任意 分隔符的文件。

  • read_csv() 函数都使用数据的第一行作为列名称
> read_csv("a,b,c
+ 1,2,3
+ 4,5,6")
# A tibble: 2 x 3
      a     b     c
  <dbl> <dbl> <dbl>
1     1     2     3
2     4     5     6
# col_names = FALSE来通知read_csv()不要将第一行作为列 标题,而是将各列依次标注为 X1 至 Xn
read_csv("a,b,c
1,2,3
4,5,6",col_names = FALSE)
  • 有时文件开头会有好几行元数据。你可以使用skip = n来跳过前n行;或者使用 comment = "#" 来丢弃所有以 # 开头的行:
#skip
read_csv("The first line of metadata
  The second line of metadata
  x,y,z
  1,2,3", skip = 2)
#comment=#
read_csv("# A comment I want to skip
       x,y,z
1,2,3", comment = "#") 
  • 换行符号、定义值
read_csv("1,2,3\n4,5,6", col_names = c("x", "y", "z"))
read_csv("a,b,c\n1,2,.", na = ".")

2.解析向量

str(parse_logical(c("TRUE", "FALSE", "NA")))
str(parse_integer(c("1", "2", "3")))
2.1数值
  • parse_number
#默认小数点是"."有的国家用逗号作为小数点,需要用参数locale = locale(decimal_mark = ",")设置。
parse_double("1.23")
#> [1] 1.23
parse_double("1,23", locale = locale(decimal_mark = ","))
#> [1] 1.23

#parse_number提取数据
parse_number("$100")
#> [1] 100
parse_number("20%")
#> [1] 20
parse_number("It cost $123.45") 
#> [1] 123
2.2 字符串

·parse_character()
charToRaw()获得一个字符串的底层编码。
处理数据文本乱码,可以用locale = locale(encoding = "")
猜测编码方式:guess_encoding(charToRaw())

3 解析文件

  • readr 使用一种启发式过程来确定每列的类型:先读取文件的前 1000 行,然后使用(相对保 守的)某种启发式算法确定每列的类型。
> challenge <- read_csv(readr_example("challenge.csv"))
Parsed with column specification:
cols(
  x = col_double(),
  y = col_logical()
)
Warning: 1000 parsing failures.
 row col           expected     actual    
# 根据上面提示修改2
challenge <- read_csv(
  readr_example("challenge.csv"), 
  col_types = cols(
    x = col_double(),#修改为双浮点数
    y = col_character()
  )
)
challenge
# 修改3
challenge <- read_csv(
  readr_example("challenge.csv"), 
  col_types = cols(
    x = col_double(),
    y = col_date()#修改为date
  )
)
tail(challenge)

4.写入文件

  • 将数据写回到磁盘:write_csv() 和 write_tsv()。
  • write_csv导出后,列的数据类型会丢失。
    替代方式:
    (1)write_rds(),read_rds-R自定义的二进制格式
    (2)feather包中的write_feather和read_feather-在多种编程语言间通用。

相关文章

网友评论

      本文标题:4-使用readr进行数据导入

      本文链接:https://www.haomeiwen.com/subject/srovectx.html