tidyr包主要的功能是实现数据框的变形,实现行或列的分割和合并,处理数据框中的空值,根据一个表格衍生出其他表格。 1.gather函数 gather函数的功能是将宽数据准换为长数据: 宽数据转长数据 函数形式:gather(data,key,value,...,na.rm=F) key:将原数据框中的所有列赋给一个新变量key value:将原数据框中的...
16 store4 浦东新区 sale2017 3200 和melt()函数不同,gather()函数需要指定关键字段key,以及关键字段对应的值value,但是gather()函数更加好理解。 二、长转宽——dcast()和spread() 还是用上面的data1数据集,先来看看dcast()函数 #长转宽——dcast dcast( data=mydata1, name+address~Year #左侧是要保留的...
tidyr包的gather()函数和spread()函数,这也是reshape2包的一个新接口。 reshape2包的melt()和dcast()函数。 还有一些其他的方法也能达成上文的目标,但我们在这里不做介绍,因为它们用起来略显复杂: R内置的reshape()函数,需要注意的是它并不来自于reshape2包。 stack()函数和unstack()函数。 示例: 下面几个数...
tidyr的转换函数gather(宽到长)和spread(长到宽)所需参数少,逻辑上更易理解,自始至终都围绕着data,key、value三个参数来进行设定,对比其它R语言长宽格式互换的实现方式,个人认为tidyr操作性还是比较突出的。 当我们用R处理数据时,应该遵循Tidy data的原则: 每一列都是变量; 每一行都是一个观察结果; 每个单元...
gather(test,科目,分数,names(test)[3:11])%>%head() melt(test,id=c("学号","姓名"),variable.name = "科目",value.name = "分数")%>%head() 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 转换后数据 可以看出转换后各个列变量聚合到了“科目”变量下,同时将value值赋到了“分数”变量下;...
从以上代码的复杂度来看,reshape2内的两个函数melt\dcast和tidyr内的两个函数gather\spread相比,gather\spread这一对函数完胜,不愧是哈神的最新力作,tidyr内的两个函数所需参数少,逻辑上更好理解,自始至终都围绕着data,key、value三个参数来进行设定,而相对老旧的包reshape2内的melt\dcast函数在参数配置上就显得...
一、宽转长——melt()、gather() mydata<-data.frame( name=c("store1","store2","store3","store4"), address=c("普陀区","黄浦区","徐汇区","浦东新区"), sale2014=c(3000,2500,2100,1000), sale2015=c(3020,2800,3900,2000),
从以上代码的复杂度来看,reshape2内的两个函数melt\dcast和tidyr内的两个函数gather\spread相比,gather\spread这一对函数完胜,不愧是哈神的最新力作,tidyr内的两个函数所需参数少,逻辑上更好理解,自始至终都围绕着data,key、value三个参数来进行设定,而相对老旧的包reshape2内的melt\dcast函数在参数配置上就显得...
我喜欢reshape2包,因为它让生活变得异常简单。通常 Hadley 在以前的包中进行了改进,使得代码更加流畅、更快运行。我想尝试一下tidyr并从中读取了一些信息,我认为gather与reshape2中的melt非常相似。但在阅读文档后,我发现gather无法完成melt的相同任务。
这⾥给⼤家介绍4个函数,其中melt()、dcast()来⾃reshape2包,gather()、spread()来⾃tidyr包 ⼀、宽转长——melt()、gather()mydata<-data.frame(name=c("store1","store2","store3","store4"),address=c("普陀区","黄浦区","徐汇区","浦东新区"),sale2014=c(3000,2500,2100,1000...