38reshape2 39tidyr 40dplyr
38reshape2
1.merge:把一个或多个共有的函数合并
例如:x<-data.frame(k1=c(NA,NA,2,3,4),k2=c(1,NA,NA,3,4),data=1:5)
y<-data.frame(k1=c(1,2,3,4,5),k2=c(NA,2,3,4,5),data=1:5)
merge(x,y,by=c("k1","k2"))k1大的交集
2.reshape2
install.packges("reshape2")
library(reshape2)
内置数据集:airquality
aq1<-melt(airquality)
名字小写:names(airquality)<-tolower(names(airquality))
aqw<-dcast(aq1,month+day~variable)
aqw<-dcast(aq1,month~variable,fun.aggregate=mean,na.rm=TRUE)
39tidyr
安装包:install.packages(c("tidyr","dplyr"))
加载包:libary(tidyr)
tidyr包有4个函数:
①gather:把宽数据转为长数据
②spread:把长数据转为宽数据
③unit:多列合为一列
④separate:一列分为多列
实例
mtcars
取10行3列
tdata<-mtcars[1:10,1:3]
tdata<-data.frame(names=rownames(tdata),tdata) #取tdata的行名
row.names: NULL或单个整数或字符串,指定某列用作行名,或者一个字符或整型向量用作数据框的行名。

gather(tdata,key="Key",value="Value",2:4)#2到4列
gdata<-gather(tdata,key="Key",value="Value",2:4)
separate(gdata,col=Value,into=c("A","B"))#col=列名
unite(x,col="AB",A,B)#col="AB”x新列名
40dplyr
library(dplyr)
查看函数: ls("package:dplyr")
①filter过滤:dplyr::filter(iris,Sepa1.Length>7)
②distinct:去重复行。dplyr:distinct(iri[1:10,],iris[1:15,])
③slice:取数据的任意行dplyr::slice(iris,10:15)
④sample_n随机取几行dplyr::sample_n(iris,10)
⑤sample_frac按比例随机取dplyr::sample_frac(iris,0.1)
⑥arrange排序dplyr::arrange(iris,Sepa1.Length)
统计函数
平均数 summarise(iris,avg=mean(Sepal.Length)) 求和 summarise(iris,sum=sum(Sepal.Length))
链式操作符: %>% 将一个函数的输出作为一个函数的输入 Rstudio 使用ctrl+shift+M
head(mtcars,20)%>%tail(5)#取16到20行
分组函数 x<-head(mtcars) dplyr::group_by(x,vs)

加新的变量 dplyr::mutate(mtcars,new=vs+am+gear+carb)

双表格的操作
①
a=data.frame(x1=c("A","B","C"),x2=c(1,2,3))b=data.frame(x1=c("A","B","D"),x3=c(T,F,T))
以左边的表为主left 并集full交集semi差集anti
dplyr::left_join(a,b,by="x1")
②j加一列mtcars<-mutate(mtcars,Model=rownames(mtcars))
first<-slice(mtcars,1:20)
second<-slice(mtcars,1:30)
交集:intersect(first,second)
并集:dplyr::union_all 补集:setdiff
浙公网安备 33010602011771号