R数据处理学习

R语言tidyr包处理数据2021.3.6

2021-03-07  本文已影响0人  R语言_茶味先生

1. tidyr包安装与载入

install.packages("tidyr")
library(tidyr)

2. tidyr包中函数的使用

函数很多,作用对象是数据框


图0 tidyr包和dplyr包

2.1 gather函数

gather函数的作用将宽数据变为长数据,第一个参数是数据集名称,第二个参数是对即将生成的key和value列命名,第三个参数是作用的范围,:是连续取的意思,-是将某列取出,不被gather函数作用。gather函数与reshape2中的melt函数的区别在于可以使某一列固定不变,让任意列进行转换。

mtcars#导入数据集
tdata<-mtcars[1:10,1:3]#截取部分数据
tdata<-data.frame(names=rownames(tdata),tdata)#将tdata的行名赋值给向量names,并将其添加tdata中
gather(tdata,key="Key",value="Value",names:disp)#生成Key列和Value列俩列,范围从names到disp,key列存储列名,value列存储不同列名对应的值,结果见图1
#gather(tdata,key="Key",value="Value",1:4)#与上面同义,取names到disp列就是取1到4列
#gather(tdata,key="Key",value="Value",names:disp,-names)#与上面唯一的不同是将names列单独拎出来。
图1 gather函数作用结果

2.2 spread函数

与gather函数的作用相反,与reshape2中的cast函数作用类似。将长数据变为宽数据

gdata<-gather(tdata,key="Key",value="Value",2:4)#与上面同义,取names到disp列就是取1到4列
spread(gdata,key="Key",value="Value")#将已经变长的数据按着Key列和Value列进行还原为宽数据
图2 spread函数作用结果

2.2 separate函数

将一列数据拆分为多列,第一个参数为数据集名称;第二个参数col指定需要拆分的列;第三个参数into是新建的列名;第四个参数sep指被拆分列的分隔符,不写的话系统也会默认识别,但是如果有多个特殊符号的话还是需要指明sep。

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
图3 separate函数作用

2.3 unite函数

将多列数据合并为一列,第一个参数为数据集名称;第二个参数col为连接后新的列的名字;第三个参数...为要连接的列名;第四个参数sep指用何种连字符合并

x<-separate(df,col=x,into=c("A","B"),sep="\\.")#将分割数据赋值给x
unite(x,col="AB",A,B,sep=".")#将分割数据x合并起来
图4 unite函数作用
上一篇下一篇

猜你喜欢

热点阅读