R for Data Science
想了一下还是做一个笔记目录,这样能够方便查询
R for Data Science(笔记) ---数据变换(filter使用)
R for Data Science(笔记) ---数据变换(select基础使用)
R for Data Science(笔记) ---数据变换(select组合其他函数)
R for Data Science(笔记) ---数据变换(创建新的变量)
R for Data Science(笔记) ---数据变换(行排序)
R for Data Science(笔记) ---数据变换(归纳总结)
R for Data Science(笔记) ---数据整理(Pivot相关函数)
tidy流处理数据的大量运用,我想这与管道符%>% 的使用,数据处理动词化,有着很重要的关系。
用最少的时间,解决最重要的、最常见的问题,我把这称为是高效;剩余的难点,我把其称为提高。
1. 列的拆分操作 separate()函数
separate() 通过在出现分隔符的地方进行拆分,将一列拆分为多列。
示例数据
table3
#> # A tibble: 6 x 3
#> country year rate
#> * <chr> <int> <chr>
#> 1 Afghanistan 1999 745/19987071
#> 2 Afghanistan 2000 2666/20595360
#> 3 Brazil 1999 37737/172006362
#> 4 Brazil 2000 80488/174504898
#> 5 China 1999 212258/1272915272
#> 6 China 2000 213766/1280428583
1.1拆分初探
现在要将rate这一列,拆分成两列,以“/”为分隔符
table3 %>%
separate(rate, into = c("cases", "population"))
#> # A tibble: 6 x 4
#> country year cases population
#> <chr> <int> <chr> <chr>
#> 1 Afghanistan 1999 745 19987071
#> 2 Afghanistan 2000 2666 20595360
#> 3 Brazil 1999 37737 172006362
#> 4 Brazil 2000 80488 174504898
#> 5 China 1999 212258 1272915272
#> 6 China 2000 213766 1280428583
上面的代码,没有给出分割的特征符号,这是因为,separate()函数默认将非字母和非数字的作为分隔符。因此,上面的代码默认将“/”视为分隔符。
操作图示当然上面的也可以写成
table3 %>%
separate(rate, into = c("cases", "population"), sep = "/")
参数sep当中的其实是正则表达式,这个结合字符串的处理将会变得异常强大。
1.2 拆分后内容性质的转换
仔细观察上面的默认转换
默认转换之后的,是字符串类型,而对于这个数据,我们应该要得到数字类型,当然这样的转换,可以在后续转换。而separate()函数可以直接完成,如下:
table3 %>%
separate(rate, into = c("cases", "population"), convert = TRUE)
#> # A tibble: 6 x 4
#> country year cases population
#> <chr> <int> <int> <int>
#> 1 Afghanistan 1999 745 19987071
#> 2 Afghanistan 2000 2666 20595360
#> 3 Brazil 1999 37737 172006362
#> 4 Brazil 2000 80488 174504898
#> 5 China 1999 212258 1272915272
#> 6 China 2000 213766 1280428583
2. unite()函数使用
有分开列的操作就有合并列的操作
示例如下:
table5 %>%
unite(new, century, year)
#> # A tibble: 6 x 3
#> country new rate
#> <chr> <chr> <chr>
#> 1 Afghanistan 19_99 745/19987071
#> 2 Afghanistan 20_00 2666/20595360
#> 3 Brazil 19_99 37737/172006362
#> 4 Brazil 20_00 80488/174504898
#> 5 China 19_99 212258/1272915272
#> 6 China 20_00 213766/1280428583
默认操作函数中,将两列连接起来用“_”,如果要改变连接方式,代码如下:
table5 %>%
unite(new, century, year, sep = "")
#> # A tibble: 6 x 3
#> country new rate
#> <chr> <chr> <chr>
#> 1 Afghanistan 1999 745/19987071
#> 2 Afghanistan 2000 2666/20595360
#> 3 Brazil 1999 37737/172006362
#> 4 Brazil 2000 80488/174504898
#> 5 China 1999 212258/1272915272
#> 6 China 2000 213766/1280428583
同样很好理解,在相应的地方加上sep参数。
网友评论