r语言提取列名_玩转数据处理120题之P1-P20(R语言tidyverse版本)
前言
今天在微信公众号【早起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版本)相关推荐
- go语言csv包_玩转数据处理120题R语言版本
点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...
- r 字符串转化为数值_玩转数据处理120题R语言版本
点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...
- 玩转数据处理120题|R语言版本
点击上方"早起Python",关注并星标公众号 和我一起玩Python 本文为玩转数据处理120题|R语言版本 习题|刘早起,解答|陈熹 大家好,本文为R语言数据处理120题系列完 ...
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...
- python底层是用什么语言实现的_我为何说Python是全栈式开发语言?
Python 的排名从去年开始就借助人工智能持续上升,如今它已经成为了第一名.但排在前四名的语言 Python.C.Java 和 C++都拥有广大的用户群体,而且他们的用户总量也十分相近.实际上,Di ...
- c语言是静态语言python语言是脚本语言对吗_初中生想学编程,请问先学C语言好还是先学Python?...
本人大二,一开始学的语言是java.碰巧C语言和python都学过皮毛,各有利弊.Python语言方便上手,pip一下,天下我有.C语言功能也很强大,从嵌入式到图形学,C语言也一直陪伴着我,很多算法都 ...
- c语言c99标准_从年薪10万到年薪30万,C语言程序员必读的5本书
C语言是由 Dennis Ritchie在1969年到1973年在贝尔实验室研发的.C语言可以把程序简单地编译为机器指令,使得它成为了最高效的语言. 为什么在程序员中,C语言如此流行呢?这背后有很多原 ...
- pandas数据处理120题
1.DataFrame基本操作 import numpy as np import pandas as pd import matplotlib.pyplot as plt 1.将下面的字典创建为Da ...
- r语言提取列名_R语言基础(2)向量|矩阵|数组|数据框|数据IO|实用函数
"pythonic生物人"的第85篇分享. 本文梳理R语言数据结构:向量.矩阵.数据框: 数据IO及实用函数. 本文速览
最新文章
- 从架构特点到功能缺陷,重新认识分析型分布式数据库
- leetcode算法题--字符串的排列
- 实战SSM_O2O商铺_19【商铺编辑】Controller层开发
- IT从业的迷思与破解之道(更新)
- Windows Subsystem for Linux(WSL)安装emqx
- java内存分配和垃圾回收,Java内存分配与垃圾回收
- “一云多芯、三V一体” 麒麟信安云融合虚拟化方案助力信创轻松上云
- TDengine与OpenTSDB对比测试
- 鸿蒙os系统越来越少了,鸿蒙系统怎么它的消息越来越少了?是不是不会上线手机了?...
- android系统 wifi,Android系统wifi分析-手动连接过程
- android 入门 (分析: 非匿名内部类 监听功能的实现)
- 慎重用EXCEl进行公式拟合!!!
- 3、查询省会(Python实现多行输入,以回车结束输入)
- 浅谈网络中数字签名技术
- php总结与展望_2018年的总结划下句号,展望2019
- 【Pandas】常用姿势积累
- poj 1703 poj 2492 并查集 桥梁判AB组
- 外卖CPS小程序部署指南,个人获取美团外卖小程序跳转链接
- linux yum安装svn版本号,CentOS7 yum安装svn服务
- 【泡咖啡1】linux下caffe编译以及python环境配置手记
热门文章
- oracle rman 实例,Oracle数据库rman常用命令的使用示例
- java spring源码_spring源码分析-spring中的bean
- lua qt 编译_Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
- Windows 安装 Redis 教程
- 基于JAVA+SpringMVC+Mybatis+MYSQL的实验室设备管理系统
- 新手使用struts2,记一次struts2启动出错
- js中数字直接点方法会报错,如1.toString()
- new image()
- JavaWEB过滤器和监听器技术
- excel实用技巧——vlookup函数