沧州外贸网站建设,网站公网安备链接怎么做,拍摄宣传视频,新网网站模板目录
一、数据转换之reshape2包#xff1a;melt与dcast函数
二、数据转换之tidyr包#xff1a;gather与spread函数#xff0c;separate与unite函数
三、据转换之dplyr包
四、参考 一、数据转换之reshape2包#xff1a;melt与dcast函数
merge 函数 使用merge函数 x melt与dcast函数
二、数据转换之tidyr包gather与spread函数separate与unite函数
三、据转换之dplyr包
四、参考 一、数据转换之reshape2包melt与dcast函数
merge 函数 使用merge函数 x - data.frame(k1c(NA,NA,3,4,5),k2c(1,NA,NA,4,5),data1:5) y - data.frame(k1c(NA,2,NA,4,5),k2c(NA,NA,3,4,5),data1:5) 【使用 cbind 或 rbind 无法区分哪部分来自 x 哪部分来自 y 。】 merge(x,y,by)合并函数by表示根据x和y中的某一列进行合并。如 merge(x,y,byc(“k1”,“k2”)) reshape2 包 安装reshape2包install.packages(reashape2) 加载reshape2包library(reshape2) 使用R中的airquality数据集做演示 names(airquality) - tolower(names(airquality)) aql - melt(airquality,id.vars c(“month”,“day”)) #将数据中的month和day作为id信息宽数据变长数据。 aqw - dcast(aql,month~variable,fun.aggregatesum,na.rmTRUE) #长数据变宽数据。 这里的~表示相关联说明二者有关系但不一定是相等fun.aggregate表示给定一个函数指定如何重塑数据na.rm表示移除na数据。 二、数据转换之tidyr包gather与spread函数separate与unite函数 安装tidyr包 tdata - mtcars[1:10,1:3] tdata - data.frame(namesrownames(tdata),tdata) gather(tdata,key“Key”,value“Value”,cyl,disp,mpg) #宽数据变长数据类似于melttdata是数据框key为标签value为对应值。 gather(tdata,key“Key”,value“Value”,cyl,-disp) #disp单独放到一列中 gdata - gather(tdata,key“Key”,value“Value”,2:4) #这里的2:4等于cyl,disp,mpg或者cyl:mpg spread(gdata,key“Key”,value“Value”) #spread函数与gather函数作用相反它是将长数据变为宽数据 df - data.frame(xc(NA,a.b,a.d,b.c)) separate(df,colx,intoc(A,B)) #将df数据框中的x列分割为A、B两列默认识别分隔符为“.” df - data.frame(xc(NA,a.b-c,a-d,b-c)) sepa - separate(df,colx,intoc(A,B),sep-) #将df数据框中的x列分割为A、B两列分隔符为“-” unite(sepa,colAB,A,B,sep-) #unite函数与separate函数作用相反将sepa中的A和B列用连接符“-”连接组成列AB 三、据转换之dplyr包
dplyr包不仅可以对单个表格进行操作也可以对双表格进行操作。 功能强大函数很多。
对单表格的操作 1dplyr::filter(iris,Sepal.Length7) #过滤函数。函数前面加上“包名::”是为了防止dplyr包中的函数名与其他函数产生冲突 dplyr::distinct(rbind(iris[1:10, ] , iris[1:15, ])) #去除重复 dplyr::slice(iris,10:15) #slice是切片的意思可以用于取出数据任意行 dplyr::sample_n(iris,10) #随机取样10行 dplyr::sample_frac(iris,0.1) #按比例随机取样 dplyr::arrange(iris,Sepal.Length) #按照iris中的花萼长度Sepal.Length进行排序 dplyr::arrange(iris,desc(Sepal.Length)) #降序 select函数dplyr包中的数据框取子集功能比R自带的subset函数更加强大。 dplyr::mutate(iris,newSepal.LengthPetal.Length) #添加新的变量new其值是Sepal.LengthPetal.Length 2dplyr包的统计函数 summarise函数 summarise(iris,avgmean(Sepal.Length)) summarise(iris,sumsum(Sepal.Length)) dplyr::group_by(iris,Species) #根据Species对iris进行分组 3链式操作符%% 两个百分号中间夹着一个大于号称为链式操作符它的功能是用于实现将一个函数的输出传递给下一个函数作为下一个函数的输入。在RStudio中可以使用ctrlshiftM快捷键输出来。 如head(mtcars,20) %% tail(10) #输出mtcars中的第10到20行 iris %% group_by(Species) %% summarise(avgmean(Sepal.Width)) %% arrange(avg) #对iris数据集先进行分组再求平均最后排序 对双表格的操作 a - data.frame(x1c(A,B,C),x2c(1,2,3)) b - data.frame(x1c(A,B,D),x3c(T,F,T)) 1左连接 dplyr::left_join(a,b,by“x1”) 2右连接 dplyr::right_join(a,b,by“x1”) 3内连接取x1的交集 dplyr::inner_join(a,b,by“x1”) 4全连接取x1的并集 5半连接a与b的交集把b中有的a中没有的去掉 dplyr::semi_join(a,b,by“x1”) 6反连接a与b的补集保留a中有而b中没有的观测 dplyr::anti_join(a,b,by“x1”) 数据集的合并 mtcars - mutate(mtcars,Modelrownames(mtcars)) first - slice(mtcars,1:20) second - slice(mtcars,10:30) 1取数据集交集intersect(first,second) 2取数据集并集dplyr::union_all(first,second) 3取非冗余的数据集并集 dplyr::union(first,second) 4取first的补集setdiff(first,second) 四、参考
R语言入门与数据分析