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-在多种编程语言间通用。
网友评论