tidyr包几个函数的用法
在R语言中,tidyr主要提供了一个类似Excel中数据透视表 (pivottable)的功能; gather和spread函数将数据在长格式和宽格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转化; separate和union方法提供了数据分组拆分、合并的功能,应用在nominal数据的转化上,整洁数据是进行数据再加工的基础。
一、tidyr包的导入
R将整洁数据定义为:每个变量的数据存储在自身的列中,每个观测值的数据存储在其自身的行中。
install.packages("tidyr")
library(tidyr)
在tidyr包中,一般包括几个函数:gather()函数;spread()函数;separate()函数;unite()函数;缺失值处理replace_na()函数。
二、tidyr包函数的使用
2.1 gather()函数
gather()函数,它可以实现将以列位字段的数据表,转化为一列长数据格式,即二维表向一维表的转换。
df <- data.frame(姓名=c('赵','钱','孙','李','周'),
语文=c(95,89,79,88,81),
数学=c(89,88,81,78,90),
英语=c(89,78,73,69,80))
df2 <- gather(df,long,成绩,语文,数学,英语)
2.2 spread()函数
tdata<-mtcars[1:10,1:3] #截取部分数据
tdata<-data.frame(names=rownames(tdata),tdata) #将tdata的行名赋值给向量names,并将其添加tdata中
gather(tdata,key="Key",value="Value",names:disp)
gdata<-gather(tdata,key="Key",value="Value",2:4) #与上面同义,取names到disp列就是取1到4列
spread(gdata,key="Key",value="Value") #将已经变长的数据按着Key列和Value列进行还原为宽数据
2.3 separate()函数
Group Year Qtr.1 Qtr.2 Qtr.3 Qtr.4
1 1 2006 4 7 1 6
2 1 2007 4 6 2 4
3 1 2008 4 5 3 8
4 1 2009 4 4 4 8
5 2 2006 4 3 5 9
6 2 2007 4 2 6 10
7 2 2008 4 1 7 11
8 2 2009 4 0 8 12
9 3 2006 4 -1 9 13
10 3 2007 4 -2 10 14
11 3 2008 4 -3 11 15
12 3 2009 4 -4 12 16
#将上面数据读入R中
dd<- read.table("clipboard",header=T)
dd1=gather(dd,jijie,value,Qtr.1:Qtr.4)
separate(dd1,col=jijie,into = c("Qtrt","jijie"),sep = "\\.")
2.4 unite()函数
df<-data.frame(x=c(NA,"a.b","a.c","b.c")) #生成数据框
x<-separate(df,col=x,into=c("A","B")) #数据分割
#x<-separate(df,col=x,into=c("A","B"),sep="\\.") #数据分割,因为.在R语言中属于元字符,是正则表达式的内容,代表任何字符,因此sep="."会被解读为任意字符,所以要加转义符号写成sep="\\."
x<-separate(df,col=x,into=c("A","B"),sep="\\.") #将分割数据赋值给x
unite(x,col="AB",A,B,sep=".") #将分割数据x合并起来
2.5 replace_na()
data_wide <- data.frame(姓名=c('赵','钱','孙','李','周'),
语文=c(95,89,79,88,NA),
数学=c(89,88,81,78,90),
英语=c(89,78,73,69,NA))
#以60分为几个,将它填入数据缺失值中。
data_wide %>%
replace_na(list(语文=60,英语=60))
三、总结
参考文献
1.(R语言tidyr包处理数据2021.3.6)[https://www.jianshu.com/p/b8e6bc0825db]
2.(R语言数据处理:tidyr包学习)[https://blog.csdn.net/m0_56444893/article/details/125212325]
tidyr包几个函数的用法的更多相关文章
- tidyr包--数据处理包
tidyr包的作者是Hadley Wickham.这个包常跟dplyr结合使用.本文将介绍tidyr包中下述四个函数的用法: gather—宽数据转为长数据.类似于reshape2包中的melt函数 ...
- java String.split()函数的用法分析
java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,195 次 在java.lang包中有String.spl ...
- R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...
- 有关日期的函数操作用法总结,to_date(),trunc(),add_months();
相关知识链接: Oracle trunc()函数的用法 oracle add_months函数 Oracle日期格式转换,tochar(),todate() №2:取得当前日期是一个星期中的第几天,注 ...
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- js中bind、call、apply函数的用法
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...
- Oracle trunc()函数的用法
Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...
- freemarker内置函数和用法
原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- JavaScript中常见的数组操作函数及用法
JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...
随机推荐
- Nexus5安装PostmarketOS(Alpine Linux)并装上Docker
Postmarket OS是一个基于Alpine Linux.能够安装到手机或其他移动设备上.当然linux deploy也可以使用SSH,但linux deploy运行在容器里.使用上会有些限制 ...
- Tesstwo9.1.0配置步骤
一,配置步骤 环境:Tesstwo9.1.0+Android10(华为)+Android11(模拟器) 1.查看tess-two的最新版本(GitHub - rmtheis/tess-two: For ...
- web后端之表单传值
第一种 第二种 第三种陪置web.xml文件
- 树形DP【初级版】
START: 2021-08-14 10:00:37 在树形DP中,我们可以用数据模拟出一张图,一般是一棵树或是森林,所有的节点一般最多只有一个父节点.并且树里面没有重边或者环, 因此,一颗有N个节点 ...
- Synchronized和Lock有什么区别?用Lock有什么好处?
Synchronized 和 Lock 1.原始构成 Synchronized 是关键字属于JVM层面 (代码中以蓝色字体呈现) monitorenter .monitorexit Lock 是具体类 ...
- CF1272 B DIV3 ---代码对比
这次DIV3有点可惜啊,题解是我的与学长的代码对比 学长的原博客https://www.cnblogs.com/xyq0220/p/12036109.html B.Snow Walking Robot ...
- JAVA 学习打卡 day2
2022-04-23 16:43:32 1.字符类型 (1)字符和整型之间的相互转换 给字符变量赋值可以使用数值和字符,它们都可以使程序正确地运行.要注意的是,字符要用一对单引号('')括起 (2)常 ...
- 5G智能网关助力打造5G移动医疗车
医疗资源分布不均衡,是导致老百姓看病难的重要原因之一.随着新一代信息技术的快速发展和普及应用,基于5G远程通信技术.音视频数字化技术,解决医疗资源分布不均衡问题,打破空间限制,让群众在家门口就能享受到 ...
- 《Unix/Linux系统编程》第九周学习笔记
<Unix/Linux系统编程>第九周学习笔记 信号和中断 中断"是从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移 到中断处理.与发送给CPU的中断请求一 ...
- MSVC设置版本
MSVC设置版本 在开发QT时,由于QT 5.12与MSVC 2017兼容,因此需要用MSVC 2017来编译使用QT 5.12的程序. 1 安装MSVC 2017 由于笔者电脑上安装的Visual ...