![v2-7e04287df604a7f38c9a516f58808252_1440w.jpg?source=172ae18b](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-7e04287df604a7f38c9a516f58808252_1440w.jpg?source=172ae18b)
这是该系列的第五篇(终篇),第一、二、三、四篇见:
张敬信:玩转数据处理120题之P1-P20(R语言tidyverse版本)zhuanlan.zhihu.com![v2-7e04287df604a7f38c9a516f58808252_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-7e04287df604a7f38c9a516f58808252_180x120.jpg)
![v2-7e04287df604a7f38c9a516f58808252_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-7e04287df604a7f38c9a516f58808252_180x120.jpg)
![v2-7e04287df604a7f38c9a516f58808252_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-7e04287df604a7f38c9a516f58808252_180x120.jpg)
![v2-7e04287df604a7f38c9a516f58808252_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-7e04287df604a7f38c9a516f58808252_180x120.jpg)
本篇是P101-P120. 需要的数据文件:
链接:https://pan.baidu.com/s/1X3xBjL7ww_RPGSglqSwQ9Q
提取码:owus
先加载包:
library
题目101(数据读取):从csv文件中读取指定数据:读取前10行, positionName和salary列
难度:★★
代码及运行结果:
read
![v2-1f69b2067ddbdb3e4754dbafe33c6922_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-1f69b2067ddbdb3e4754dbafe33c6922_b.jpg)
注1:该数据是GBK编码,为避免中文乱码,GBK编码的csv或txt用read.csv()读取;UTF-8编码的csv或txt用readr::read_csv()读取;若用read_csv()读取GBK编码文件,需要设置编码(见题目110)。
注2:R中常规读取数据不能在读取时选择列,采用读取之后选择列。
题目102(数据读取):从csv文件中读取数据,将薪资大于10000的改为"高"
难度:★★
代码及运行结果:
df
![v2-1b779459af4eae298bb9aa09ca4a1f62_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-1b779459af4eae298bb9aa09ca4a1f62_b.jpg)
题目103(数据操作):从df中对薪资水平每隔20行进行抽样
难度:★★
代码及运行结果:
df
![v2-2c114e57a6cf1431c539f3b719c8318d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-2c114e57a6cf1431c539f3b719c8318d_b.jpg)
题目104(数据操作):取消使用科学记数法
难度:★★
代码及运行结果:
set
![v2-4df7dd9a3fe7887fcbcb3b62773a63ef_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-4df7dd9a3fe7887fcbcb3b62773a63ef_b.png)
题目105(数据操作):将上一题的数据转换为百分数
难度:★★★
代码及运行结果:
df
![v2-aa28d943a885c8bed4ad582982b979f2_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-aa28d943a885c8bed4ad582982b979f2_b.png)
题目106(数据操作):查找上一题数据中第3大值的行号
难度:★★★
代码及运行结果:
order
![v2-ae14b47013afa941825ad9c0d98e683d_b.png](http://img-02.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-ae14b47013afa941825ad9c0d98e683d_b.png)
题目107(数据操作):反转df的行
难度:★★
代码及运行结果:
df
![v2-6eb6b68ba116c1a75f09f7114eb0714d_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-6eb6b68ba116c1a75f09f7114eb0714d_b.png)
题目108(数据连接:全连接):根据多列匹配合并数据,保留df1和df2的观测
难度:★★
代码及运行结果:
df1
![v2-0fbff6d232a86edc653b8da19d6b5144_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-0fbff6d232a86edc653b8da19d6b5144_b.jpg)
df2
![v2-65d55b7a6825500a34d991af71dc780d_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-65d55b7a6825500a34d991af71dc780d_b.jpg)
df1 %>%
full_join(df2, by = c("key1", "key2"))
![v2-aca45dd6ea48b3509394b9bc44b90b38_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-aca45dd6ea48b3509394b9bc44b90b38_b.jpg)
题目109(数据连接:左连接):根据多列匹配合并数据,只保留df1的观测
难度:★★
代码及运行结果:
df1
![v2-1ad8e0f844d8b93bb89f7f1429b3d161_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-1ad8e0f844d8b93bb89f7f1429b3d161_b.jpg)
注:dplyr包还提供了右连接:right_join(),内连接:inner_join(),以及用于过滤的连接:半连接:semi_join(),反连接:anti_join().
题目110(数据处理):再次读取数据1并显示所有列
难度:★★
代码及运行结果:
df
![v2-82ea606e677d3957feff042e6bdd301d_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-82ea606e677d3957feff042e6bdd301d_b.jpg)
![v2-245c43e124b0ab0b3f2bda9a2b9db7f9_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-245c43e124b0ab0b3f2bda9a2b9db7f9_b.jpg)
![v2-067949cdc8336b9d6448f165bfad95bf_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-067949cdc8336b9d6448f165bfad95bf_b.jpg)
题目111(数据操作):查找secondType与thirdType值相等的行号
难度:★★
代码及运行结果:
which
![v2-fe1b6c086c34675e2c9024ec526bc929_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-fe1b6c086c34675e2c9024ec526bc929_b.png)
题目112(数据操作):查找薪资大于平均薪资的第三个数据
难度:★★★
代码及运行结果:
df
![v2-ba1e6aed8ea2d5597fd45b2a9a96d65c_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-ba1e6aed8ea2d5597fd45b2a9a96d65c_b.jpg)
题目113(数据操作):将上一题数据的salary列开根号
难度:★★
代码及运行结果:
df
![v2-470922c05c5f670821874354b9d0d292_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-470922c05c5f670821874354b9d0d292_b.jpg)
题目114(数据操作):将上一题数据的linestation列按_拆分
难度:★★★
代码及运行结果:
df
![v2-89dc5916d313febb47d0820141105531_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-89dc5916d313febb47d0820141105531_b.jpg)
注:正常需要先按“;”分割,再分别按“-”分割。
题目115(数据查看):查看上一题数据一共有多少列
难度:★
代码及运行结果:
ncol
![v2-aadd2367ac423a1fe9939f40da59d0ce_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-aadd2367ac423a1fe9939f40da59d0ce_b.png)
题目116(数据操作):提取industryField列以"数据"开头的行
难度:★★
代码及运行结果:
df
![v2-0d54dbe36c457f21d2870d460568cfd3_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-0d54dbe36c457f21d2870d460568cfd3_b.jpg)
题目117(数据分组汇总):以salary score和positionID做数据透视表
难度:★★★
代码及运行结果:
df
![v2-2949c40678dcb2d6a01d65159681787c_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-2949c40678dcb2d6a01d65159681787c_b.jpg)
题目118(数据分组汇总):同时对salary、score两列进行汇总计算
难度:★★★
代码及运行结果:
df
![v2-9e90e8bcfc19cdef4319231cf530c094_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-9e90e8bcfc19cdef4319231cf530c094_b.png)
注:若要分组再这样汇总,前面加上group_by(grpvar)即可;若改用dplyr1.0的cross()会更加简洁。
题目119(数据分组汇总):同时对不同列进行不同的汇总计算:对salary求平均,对score求和
难度:★★★
代码及运行结果:
df
![v2-23da5c67fb015426b8d21e01ac773f0d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-23da5c67fb015426b8d21e01ac773f0d_b.jpg)
注:若要分组再这样汇总,前面加上group_by(grpvar)即可。
题目120(数据分组汇总):计算并提取平均薪资最高的区
难度:★★★★
代码及运行结果:
df
![v2-888f5c857cb9a6a1bd67e40630844f67_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-888f5c857cb9a6a1bd67e40630844f67_b.jpg)
后记
- 120道数据处理题目做完了,个别题目是经过查阅写成,尽量采用最简洁、优雅的方式来实现。总体来说,题目比较简单,没太涉及到复杂的数据处理,适合用来学习和练手。
- 全部代码都是在dplyr 0.8.4下实现,就在今天dplyr包正式升级到1.0.0版本,后续我将更新到该版本。只有极少数题目有更简洁的写法,暂时先不做改写。
- 花时间写这个系列,当然自己能进一步学习巩固,同时也希望推广 2017 年以来的“新”R,特别是tidyverse流,打消多数人对R不好用的误解。
参考文献
遥遥无期:玩转数据处理120题|Pandas版本zhuanlan.zhihu.com![v2-9c0ff046099eb3d41eeea9bd8c28453c_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=044e7b74-5c2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-9c0ff046099eb3d41eeea9bd8c28453c_180x120.jpg)