前言

今天在微信公众号【早起Python】,看到有篇文章叫做【玩转数据处理120题】,最初来自【Pandas进阶修炼120题】,作者刘早起开始是用pandas实现的,后来又加入了中山大学博士陈熹的R语言版本。

但是这个R语言版本,代码比较陈旧和啰嗦,甚至是误解(比如R语言处理Excel文件不好之类,mutate与summarise混淆),根本没有体现出如今R语言在有了tidyverse之后,在数据处理上比python更加“简洁”和“优雅”。

所以,我打算利用R语言 tidyverse,也来玩转一下这个数据处理120题。同时也是为如今的R语言正名,不要停留在R语言不好用的老观念上。

本篇先来第1-20题。


题目1(创建数据框):将下面的字典创建为DataFrame

data = {"grammer": ["Python","C","Java","GO",np.nan,"SQL","PHP","Python"], "score":[1,2,np.nan,4,5,6,7,10]}

难度:★

代码及运行结果:

df = tibble(grammer = c("Python","C","Java","GO", NA,"SQL","PHP","Python"), score = c(1,2,NA,4,5,6,7,10))
df

问题2(筛选行):提取含有字符串"Python"的行

难度:★

代码及运行结果

df %>%filter(grammer == "Python")

题目3(查看列名):输出df的所有列名

难度:★

代码及运行结果

names(df)

题目4(修改列名):修改第2列列名为"popularity"

难度:★★

代码及运行结果

df = df %>%rename(popularity = score)
df

题目5(统计频数):统计grammer列中每种编程语言出现的次数

难度:★★

代码及运行结果

df %>%count(grammer)   # 或者用 table(df$grammer)

题目6(缺失值处理):将空值用上下值的平均值填充

难度:★★★

代码及运行结果

df = df %>%mutate(popularity = zoo::na.approx(popularity))
df

:dplyr包提供了fill()函数,可以用前值或后值插补缺失值。

题目7(筛选行):提取popularity列中值大于3的行

难度:★★

代码及运行结果

df %>%filter(popularity > 3)

题目8(数据去重):按grammer列进行去重

难度:★★

代码及运行结果

df %>%distinct(grammer, .keep_all = TRUE)

题目9(数据计算):计算popularity列平均值

难度:★★

代码及运行结果

df %>%summarise(popularity_avg = mean(popularity))

题目10(格式转换):将grammer列转换为序列

难度:★

代码及运行结果

df$grammer

注:R从数据框中提取出来就是字符向量。

题目11(数据保存):将数据框保存为Excel

难度:★★

代码及运行结果:

writexl::write_xlsx(df, "filename.xlsx")

题目12(数据查看):查看数据的行数列数

难度:★

代码及运行结果:

dim(df)

题目13(筛选行):提取popularity列值大于3小于7的行

难度:★★

代码及运行结果:

df %>%filter(popularity > 3 & popularity < 7)

题目14(调整列位置):交互两列的位置

难度:★★

代码及运行结果:

df %>%select(popularity, grammer)

:可配合everything()放置“其余列”,更强大的调整列位置的函数是dplyr1.0将提供的relacate().

题目15(筛选行):提取popularity列最大值所在的行

难度:★★

代码及运行结果:

df %>%filter(popularity == max(popularity))
# 或者用df %>% top_n(1, popularity)

题目16(查看数据):查看最后几行数据

难度:★

代码及运行结果:

tail(df)   # 默认是最后6行

:此外,head()查看前几行,dplyr包还提供了sample_n()和sample_frac()随机查看n行或某比例的行。

题目17(修改数据):删除最后一行数据

难度:★★

代码及运行结果:

df %>%slice(-n())

题目18(修改数据):添加一行数据:"Perl", 6

难度:★★

代码及运行结果:

newrow = tibble(grammer="Perl", popularity=6)df %>%bind_rows(newrow)

题目19(数据整理):对数据按popularity列值从到大到小排序

难度:★★

代码及运行结果:

df %>%arrange(desc(popularity))

:不套一层desc(), 是默认从小到大排序。

题目20(字符统计):统计grammer列每个字符串的长度

难度:★★

代码及运行结果:

df %>%mutate(strlen = str_length(grammer))

参考文献

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

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

r语言提取列名_玩转数据处理120题之P1-P20(R语言tidyverse版本)相关推荐

  1. go语言csv包_玩转数据处理120题R语言版本

    点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...

  2. r 字符串转化为数值_玩转数据处理120题R语言版本

    点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...

  3. 玩转数据处理120题|R语言版本

    点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...

  4. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)

    学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  5. python底层是用什么语言实现的_我为何说Python是全栈式开发语言?

    Python 的排名从去年开始就借助人工智能持续上升,如今它已经成为了第一名.但排在前四名的语言 Python.C.Java 和 C++都拥有广大的用户群体,而且他们的用户总量也十分相近.实际上,Di ...

  6. c语言是静态语言python语言是脚本语言对吗_初中生想学编程,请问先学C语言好还是先学Python?...

    本人大二,一开始学的语言是java.碰巧C语言和python都学过皮毛,各有利弊.Python语言方便上手,pip一下,天下我有.C语言功能也很强大,从嵌入式到图形学,C语言也一直陪伴着我,很多算法都 ...

  7. c语言c99标准_从年薪10万到年薪30万,C语言程序员必读的5本书

    C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的.C语言可以把程序简单地编译为机器指令,使得它成为了最高效的语言. 为什么在程序员中,C语言如此流行呢?这背后有很多原 ...

  8. pandas数据处理120题

    1.DataFrame基本操作 import numpy as np import pandas as pd import matplotlib.pyplot as plt 1.将下面的字典创建为Da ...

  9. r语言提取列名_R语言基础(2)向量|矩阵|数组|数据框|数据IO|实用函数

    "pythonic生物人"的第85篇分享. 本文梳理R语言数据结构:向量.矩阵.数据框: 数据IO及实用函数. 本文速览

最新文章

  1. 从架构特点到功能缺陷,重新认识分析型分布式数据库
  2. leetcode算法题--字符串的排列
  3. 实战SSM_O2O商铺_19【商铺编辑】Controller层开发
  4. IT从业的迷思与破解之道(更新)
  5. Windows Subsystem for Linux(WSL)安装emqx
  6. java内存分配和垃圾回收,Java内存分配与垃圾回收
  7. “一云多芯、三V一体” 麒麟信安云融合虚拟化方案助力信创轻松上云
  8. TDengine与OpenTSDB对比测试
  9. 鸿蒙os系统越来越少了,鸿蒙系统怎么它的消息越来越少了?是不是不会上线手机了?...
  10. android系统 wifi,Android系统wifi分析-手动连接过程
  11. android 入门 (分析: 非匿名内部类 监听功能的实现)
  12. 慎重用EXCEl进行公式拟合!!!
  13. 3、查询省会(Python实现多行输入,以回车结束输入)
  14. 浅谈网络中数字签名技术
  15. php总结与展望_2018年的总结划下句号,展望2019
  16. 【Pandas】常用姿势积累
  17. poj 1703 poj 2492 并查集 桥梁判AB组
  18. 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
  19. linux yum安装svn版本号,CentOS7 yum安装svn服务
  20. 【泡咖啡1】linux下caffe编译以及python环境配置手记

热门文章

  1. oracle rman 实例,Oracle数据库rman常用命令的使用示例
  2. java spring源码_spring源码分析-spring中的bean
  3. lua qt 编译_Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
  4. Windows 安装 Redis 教程
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
  6. 新手使用struts2,记一次struts2启动出错
  7. js中数字直接点方法会报错,如1.toString()
  8. new image()
  9. JavaWEB过滤器和监听器技术
  10. excel实用技巧——vlookup函数