r语言read.xlsx编码_玩转数据处理120题之P101-P120(R语言tidyverse版本)

v2-7e04287df604a7f38c9a516f58808252_1440w.jpg?source=172ae18b

这是该系列的第五篇(终篇),第一、二、三、四篇见:

张敬信:玩转数据处理120题之P1-P20(R语言tidyverse版本)​zhuanlan.zhihu.com
v2-7e04287df604a7f38c9a516f58808252_180x120.jpg
张敬信:玩转数据处理120题之P21-P50(R语言tidyverse版本)​zhuanlan.zhihu.com
v2-7e04287df604a7f38c9a516f58808252_180x120.jpg
张敬信:玩转数据处理120题之P51-P80(R语言tidyverse版本)​zhuanlan.zhihu.com
v2-7e04287df604a7f38c9a516f58808252_180x120.jpg
张敬信:玩转数据处理120题之P81-P100(R语言tidyverse版本)​zhuanlan.zhihu.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

注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

题目103(数据操作):从df中对薪资水平每隔20行进行抽样

难度:★★

代码及运行结果:

df 

v2-2c114e57a6cf1431c539f3b719c8318d_b.jpg

题目104(数据操作):取消使用科学记数法

难度:★★

代码及运行结果:

set

v2-4df7dd9a3fe7887fcbcb3b62773a63ef_b.png

题目105(数据操作):将上一题的数据转换为百分数

难度:★★★

代码及运行结果:

df 

v2-aa28d943a885c8bed4ad582982b979f2_b.png

题目106(数据操作):查找上一题数据中第3大值的行号

难度:★★★

代码及运行结果:

order

v2-ae14b47013afa941825ad9c0d98e683d_b.png

题目107(数据操作):反转df的行

难度:★★

代码及运行结果:

df 

v2-6eb6b68ba116c1a75f09f7114eb0714d_b.png

题目108(数据连接:全连接):根据多列匹配合并数据,保留df1和df2的观测

难度:★★

代码及运行结果:

df1 

v2-0fbff6d232a86edc653b8da19d6b5144_b.jpg
df2

v2-65d55b7a6825500a34d991af71dc780d_b.jpg
df1 %>% 
  full_join(df2, by = c("key1", "key2"))

v2-aca45dd6ea48b3509394b9bc44b90b38_b.jpg

题目109(数据连接:左连接):根据多列匹配合并数据,只保留df1的观测

难度:★★

代码及运行结果:

df1 

v2-1ad8e0f844d8b93bb89f7f1429b3d161_b.jpg

注:dplyr包还提供了右连接:right_join(),内连接:inner_join(),以及用于过滤的连接:半连接:semi_join(),反连接:anti_join().

题目110(数据处理):再次读取数据1并显示所有列

难度:★★

代码及运行结果:

df 

v2-82ea606e677d3957feff042e6bdd301d_b.jpg

v2-245c43e124b0ab0b3f2bda9a2b9db7f9_b.jpg

v2-067949cdc8336b9d6448f165bfad95bf_b.jpg

题目111(数据操作):查找secondType与thirdType值相等的行号

难度:★★

代码及运行结果:

which

v2-fe1b6c086c34675e2c9024ec526bc929_b.png

题目112(数据操作):查找薪资大于平均薪资的第三个数据

难度:★★★

代码及运行结果:

df 

v2-ba1e6aed8ea2d5597fd45b2a9a96d65c_b.jpg

题目113(数据操作):将上一题数据的salary列开根号

难度:★★

代码及运行结果:

df 

v2-470922c05c5f670821874354b9d0d292_b.jpg

题目114(数据操作):将上一题数据的linestation列按_拆分

难度:★★★

代码及运行结果:

df 

v2-89dc5916d313febb47d0820141105531_b.jpg

:正常需要先按“;”分割,再分别按“-”分割。

题目115(数据查看):查看上一题数据一共有多少列

难度:★

代码及运行结果:

ncol

v2-aadd2367ac423a1fe9939f40da59d0ce_b.png

题目116(数据操作):提取industryField列以"数据"开头的行

难度:★★

代码及运行结果:

df 

v2-0d54dbe36c457f21d2870d460568cfd3_b.jpg

题目117(数据分组汇总):以salary score和positionID做数据透视表

难度:★★★

代码及运行结果:

df 

v2-2949c40678dcb2d6a01d65159681787c_b.jpg

题目118(数据分组汇总):同时对salary、score两列进行汇总计算

难度:★★★

代码及运行结果:

df 

v2-9e90e8bcfc19cdef4319231cf530c094_b.png

:若要分组再这样汇总,前面加上group_by(grpvar)即可;若改用dplyr1.0的cross()会更加简洁。

题目119(数据分组汇总):同时对不同列进行不同的汇总计算:对salary求平均,对score求和

难度:★★★

代码及运行结果:

df 

v2-23da5c67fb015426b8d21e01ac773f0d_b.jpg

:若要分组再这样汇总,前面加上group_by(grpvar)即可。

题目120(数据分组汇总):计算并提取平均薪资最高的区

难度:★★★★

代码及运行结果:

df 

v2-888f5c857cb9a6a1bd67e40630844f67_b.jpg

后记

  1. 120道数据处理题目做完了,个别题目是经过查阅写成,尽量采用最简洁、优雅的方式来实现。总体来说,题目比较简单,没太涉及到复杂的数据处理,适合用来学习和练手。
  2. 全部代码都是在dplyr 0.8.4下实现,就在今天dplyr包正式升级到1.0.0版本,后续我将更新到该版本。只有极少数题目有更简洁的写法,暂时先不做改写。
  3. 花时间写这个系列,当然自己能进一步学习巩固,同时也希望推广 2017 年以来的“新”R,特别是tidyverse流,打消多数人对R不好用的误解。

参考文献

遥遥无期:玩转数据处理120题|Pandas版本​zhuanlan.zhihu.com
v2-9c0ff046099eb3d41eeea9bd8c28453c_180x120.jpg

版权声明:原创作品,欢迎转载,请注明出处,禁止用于出版。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值