发布时间:2026-07-21阅读(1)
今天在看《R for datascience》这本书的如何读入数据这一章,本来觉得这个挺简单的哈,一看发现自己还有很多不会的,索性就写下来,大家瞅瞅吧。
parse_*()读入数据之前一定要了解的就是这个解析函数parse_*(),它决定了软件到底怎么读入某一个文件。比如相同的东西,不同的解析读入的东西就不一样:

今天就一起给大家写一些常见的解析函数,一共8个parse函数:
解析数字似乎不难,但是也有地方需要注意各个国家表示数字方法不一样:
比如有的国家用,而非.来表示小数点。这个时候就需要使用locale属性:你可以用decimal_mark规定不同的小数点表示方法,比如:
parse_double("1.23")#> [1] 1.23parse_double("1,23", locale = locale(decimal_mark = ","))#> [1] 1.23
parse_number()还有一个特性就是自动忽略数字前后的符号,在百分数和钱的解析中很常用:
parse_number("$100")#> [1] 100parse_number("20%")#> [1] 20parse_number("It cost $123.45")#> [1] 123
而对于字符串而言,不同的字符编码存储方法,其打印结果不同,很多时候字符默认的编码是UTF-8,但对于不是此方法编码的字符,解析的时候就得在locale中给出编码方式,否则会出现乱码,比如:
x1 <- "El Ni\xf1o was particularly bad this year"x2 <- "\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd"
对于上面的两个对象进行解析,如果我们不指定正确的编码,得到结果如下图:

指定正确的编码方法后,得到正确的结果:

你可以直接把因子理解为分类变量,在解析因子的时候需要给出level水平,这样的话解析时遇到的不属于因子水平的变量时,就会自动给出提示,如下:
fruit <- c("apple", "banana")parse_factor(c("apple", "banana", "bananana"), levels = fruit)

上面的代码中,规定只有两个level水平,但是解析内容中出现了bananana,这个就自动解析为缺失值了,同时程序给出了警告。
parse_datetime()parse_datetime()是用来解析时间的,默认需要的输入是ISO8601型的时间格式,就是“年月日时分秒”的格式,看例子:
parse_datetime("2010-10-01T2010")#> [1] "2010-10-01 20:10:00 UTC"# If time is omitted, it will be set to midnightparse_datetime("20101010")#> [1] "2010-10-10 UTC"
parse_date()这个默认的格式是4位数字的年加上-or /然后月份,然后再加- or /,然后日期,看例子:
parse_date("2010-10-01")#> [1] "2010-10-01"
parse_time()默认的输入是小时然后:然后分钟:然后秒,第二个:可以省略,看例子:
library(hms)parse_time("01:10 am")#> 01:10:00parse_time("20:10:01")#> 20:10:01
重要的是我们可能有自己的输入习惯,这个时候也可以自己设定解析方式,需要用到的方法如下:
Year
Month
Day
Time
Non-digits
这个时候不来点例子,好多同学肯定搞不明白,那就上例子:
parse_date("01/02/15", "%m/%d/%y")#> [1] "2015-01-02"parse_date("01/02/15", "%d/%m/%y")#> [1] "2015-02-01"parse_date("01/02/15", "%y/%m/%d")#> [1] "2001-02-15"
上面的例子中,%d、%m、%y表示2位数的日月年,组合的顺序不同,同样的数字解析出来的时间就不同,上面的例子中,同样是01,在一个中解析出来是一月份,第二个中解析出来是1日,第三个中解析出来却是2001年。
小结今天给大家写了常见的解析函数,其实还有文件的解析我还没有写,关注我,之后慢慢给大家写,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。
(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)
往期内容:
R数据分析:R Markdown:数据分析过程报告利器,你必须得学呀
R数据分析:stargazer给你一个漂亮的可以直接发表的结果表格
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图