数据合并与排序
2018-08-31
2018-08-31
数据合并与排序
1 数据获取
R数据集的获取,分为外部导入和内部获取。以下在数据合并中会对两种方法进行展示。用data()函数能调出R中含有的自带数据集,选择R自带的state.area数据进行读取,如下所示:
state.area=data.frame(state.area)
str(state.area) # 浏览state.area数据结构信息
## 'data.frame': 50 obs. of 1 variable:
## $ state.area: num 51609 589757 113909 53104 158693 ...
通过读取R自带的state.area数据,可以得到数据集中变量情况,数据中含有50条数据,1个变量。
state.area=data.frame(state.name)
str(state.name) # 浏览state.name数据结构信息
## chr [1:50] "Alabama" "Alaska" "Arizona" "Arkansas" "California" ...
通过读取R自带的state.name数据,可以得到数据集中变量情况,数据中含有50条数据,1个变量。
2 数据的合并
数据合并是指将两个有相同关键字的数据,以关键字或内容等来进行合并。
1)合并两个数据:
基本函数规则:merge(数据1,数据2)
mergedata<-merge(state.name,state.area)#合并两个数据为mergedata
str(mergedata) # 查看合并后的mergedata的数据结构
## 'data.frame': 2500 obs. of 2 variables:
## $ x : Factor w/ 50 levels "Alabama","Alaska",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ state.name: Factor w/ 50 levels "Alabama","Alaska",..: 1 1 1 1 1 1 1 1 1 1 ...
通过数据进行合并后,得到2500条数据,含有2个变量.
2)关键字合并
实现数据合并,需要通过数据中的关键字进行合并。合并的函数是merge,基本函数规则为:merge(data1,data2,by=“关键字”)
外部数据导入,以常见的Excel数据为例,如下所示:
library(readxl)
## Warning: package 'readxl' was built under R version 3.4.4
data1=read_excel("D:/Task/2R语言基础/课程2.xlsx") ##导入Excel数据
str(data1)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3 obs. of 5 variables:
## $ 学号 : num 90236 90237 90238
## $ 性别 : chr "女" "男" "女"
## $ 基于R统计分析与数据挖掘: num 93 87 90
## $ 统计预测与决策 : num 95 87 90
## $ 统计学 : num 89 67 80
通过加载readxl包,用来读取xlsx格式的数据。得到3条数据,5个变量。
data2=read.csv("D:/Task/2R语言基础/课程1.csv", stringsAsFactors=F) #导入csv数据
str(data2)
## 'data.frame': 3 obs. of 6 variables:
## $ 学号: int 90236 90237 90238
## $ 性别: chr "女" "男 " "女"
## $ 英语: int 89 73 91
## $ 数学: int 60 90 89
## $ 思修: int 89 90 91
## $ 马原: int 93 90 88
通过对csv格式的数据进行读取,得到3条数据,6个变量。其中data2和data1中有数据元素相同,需要以相同元素为规则,对2个数据进行合并。
合并数据是为了将数据的信息内容进行完善,从而丰富数据的信息量。
mydata<-merge(data1,data2,by="学号") #通过学号关键字进行合并数据
str(mydata) ## 读取合并后的mydata
## 'data.frame': 3 obs. of 10 variables:
## $ 学号 : num 90236 90237 90238
## $ 性别.x : chr "女" "男" "女"
## $ 基于R统计分析与数据挖掘: num 93 87 90
## $ 统计预测与决策 : num 95 87 90
## $ 统计学 : num 89 67 80
## $ 性别.y : chr "女" "男 " "女"
## $ 英语 : int 89 73 91
## $ 数学 : int 60 90 89
## $ 思修 : int 89 90 91
## $ 马原 : int 93 90 88
通过关键字“学号”,对数据进行合并,数据的信息更加完善,得到了3条数据,10个变量信息。
3 数据排序
数据排序是按照一定规律对数据进行排列、整理。通常以降序或者升序排列,能够有效的观察到数据的特征。
1)order函数排序
利用order函数进行排序,基本函数规则为:
order(向量名列表,decreasing=TRUE/FALSE)
参数decreasing的含义是对数据进行升降序排列。当decreasing=TRUE时表示对数据的位置进行降序排列;当decreasing=FALSE时表示对数据位置的进行升序排列。如下所示:
mydata$统计学
## [1] 89 67 80
数据中的统计学成绩最高是89分,对应元素位置为1;统计学成绩最低为67分,对应元素位置是2;统计学成绩为80分,对应元素位置是3.
order(mydata$统计学,decreasing=TRUE)
## [1] 1 3 2
对mydata数据的变量统计学的成绩进行降序排列,其中统计学成绩最高是89分对应位置为1,统计学成绩最低为67分的位置是2,统计学成绩为80分的位置是3.故order函数是对位置中对应的数值大小内容进行降序排列,即“1 3 2”对应的排序分数是“89 80 67”。
order(mydata$统计学,decreasing=FALSE)
## [1] 2 3 1
如果不加参数decreasing,会自动按照升序排列,加了参数decreasing=FALSE时表示对数据进行升序排列。其中统计学成绩最高是89分对应位置为1,统计学成绩最低为67分的位置是2,统计学成绩为80分的位置是3.故order函数是对位置中对应的数值大小内容进行升序排列,即“2 3 1”对应的排序含义是“67 80 89”。
2)sort函数排序
利用sort函数进行排序,基本函数规则为:
sort(向量名列表,decreasing=TRUE/FALSE)
其中,参数decreasing表示对数据进行升降序排列。当decreasing=TRUE时表示对数据进行降序排列;当decreasing=FALSE时表示对数据进行升序排列。如下所示:
sort(mydata$统计学,decreasing=TRUE)
## [1] 89 80 67
对mydata数据的变量统计学的成绩进行降序排列,排序后统计学成绩最高为89分,统计学成绩最低为67分。
sort(mydata$统计学,decreasing=FALSE)
## [1] 67 80 89
如果不加参数decreasing,会自动按照升序排列,加了参数decreasing=FALSE时表示对数据进行升序排列。可见排序后统计学成绩最低为67分,统计学成绩最高为89分。