R语言学习系列06修改变量名数据排序随机抽样.docx
- 文档编号:10022574
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:9
- 大小:63.51KB
R语言学习系列06修改变量名数据排序随机抽样.docx
《R语言学习系列06修改变量名数据排序随机抽样.docx》由会员分享,可在线阅读,更多相关《R语言学习系列06修改变量名数据排序随机抽样.docx(9页珍藏版)》请在冰豆网上搜索。
R语言学习系列06修改变量名数据排序随机抽样
06.修改变量名,数据排序,随机抽样
一、变量的重命名
1.用交互式编辑器
假设修改数据集x的变量名,键入函数fix(x),即可翻开交互式编辑器界面。
>score<-data.frame(student=c("A","B","C","D"),gender=c("M","M","F","F"),math=c(90,70,80,60),Eng=c(88,78,69,98),pl=c(66,59,NA,88))
>fix(score)
>score.list<-as.list(score)#将score转化为列表
>fix(score.list)
〔1〕假设数据集为矩阵或数据框
将翻开“数据编辑器〞,单击要修改的变量名,在弹出的“变量编辑器〞修改即可:
〔2〕假设数据集为列表
将交互式编辑器为一个记事本,只需修改“.Names〞之后对应的变量名即可:
2.用函数rename()
reshape包中的函数rename(),用来修改数据库和列表的变量名,但不能修改矩阵的变量名,根本格式为:
rename(x,c(oldname="newname",...))
其中,oldname为原变量名,newname为新变量名。
library(reshape)
>rename(score,c(pl="chinese"))
studentgendermathEngchinese
1AM908866
2BM707859
3CF8069NA
4DF609888
>rename(score.list,c(pl="chinese"))
$student
[1]ABCD
Levels:
ABCD
$gender
[1]MMFF
Levels:
FM
$math
[1]90708060
$Eng
[1]88786998
$chinese
[1]6659NA88
注意:
原数据集中的变量名并未被修改。
3.用函数names()
和rename()一样可用来修改数据框和列表的变量名,不能修改矩阵的变量名;区别在于:
names()会在原数据集中修改变量名。
其根本格式为:
names(x)[i]<-"newname"
>names(score)[5]="chinese"
>score
studentgendermathEngchinese
1AM908866
2BM707859
3CF8069NA
4DF609888
4.用函数colnames()和rownames()
用来修改矩阵的变量名〔行名和列名〕,也能修改数据框的行名和列名。
根本格式为:
rownames(x)[i]<-"newname"
>colnames(score)[5]="Chinese"
>score
studentgendermathEngChinese
1AM908866
2BM707859
3CF8069NA
4DF609888
>rownames(score)=letters[1:
4]
>score
studentgendermathEngChinese
aAM908866
bBM707859
cCF8069NA
dDF609888
二、数据排序
1.函数sort(),根本格式:
sort(x,decreasing=FALSE,na.last=FALSE,...)
其中,x为排序对象〔数值型或字符型〕;decreasing默认为FALSE即升序,TURE为降序;na.last默认为FALSE〔NA值将被删除〕,假设为TRUE,那么将向量中的NA值放到序列末尾。
>sort(score$math)
[1]60708090
>sort(score$math,decreasing=TRUE)
[1]90807060
>sort(score$Chinese,na.last=TRUE)
[1]596688NA
2.函数rank()
返回值是该向量中对应元素的秩〔排名〕,根本格式为:
rank(x,na.last=FALSE,ties.method=...)
其中,ties.method指定对数据集中的重复数据的秩的处理方式:
“average〞——取平均值秩〔默认〕
“first〞——位于前面的数据的秩取小,依次递增
“random〞——随机定义重复秩
“max〞——取最大重复秩
“min〞——取最小重复秩
>x<-c(3,4,2,5,5,3,8,9)
>rank(x)
[1]2.54.01.05.55.52.57.08.0
>rank(x,ties.method="first")
[1]24156378
>rank(x,ties.method="random")
[1]34165278
>rank(x,ties.method="max")
[1]34166378
3.函数order()
对数据进展排序,返回值是对应“排名〞的元素所在向量中的位置,即最小值、次小值、...、最大值所在的位置。
根本格式为:
order(x,decreasing=FALSE,na.last=FALSE,...)
不同于前两个函数,order()还可以对数据框进展排序:
data_frame[order(data_frame$v1,data_frame$v2,…),]
假设v1值一样,那么按v2升序排序;要将升序改为降序,在变量前添加负号,或用decreasing=TRUE即可。
>order(score$math)
[1]4231
>score[order(score$math),]
studentgendermathEngchinese
4DF609888
2BM707859
3CF8069NA
1AM908866
>score[order(-score$math),]
studentgendermathEngchinese
1AM908866
3CF8069NA
2BM707859
4DF609888
4.函数rev()
求逆序,将序列进展反转,即1,2,3变成3,2,1
三、简单随机抽样
用少量数据测试数据集时,常用随机抽样方法从整体中选出局部样本数据。
简单随机抽样,是指从总体N个样本中任意抽取n个样本,每个样本被抽中的概率相等;分为重复抽样〔有放回〕、不重复抽样〔不放回〕。
使用sampling包实现。
1.有放回简单随机抽样
函数srswr(),根本格式为:
srswr(n,N)
表示从总体N中有放回地随机抽取n个样本,返回一个长度为N的向量,每个分量分别表示各元素被抽取到的次数。
>library(sampling)
>LETTERS
[1]"A""B""C""D""E""F""G""H""I""J""K"
[12]"L""M""N""O""P""Q""R""S""T""U""V"
[23]"W""X""Y""Z"
>s<-srswr(10,26)
>s
[1]20110000100200030000000
[24]000
>ind<-(1:
26)[s!
=0]#被抽到的样本编号
>ind
[1]13491216
>n<-s[s!
=0]#被抽到的样本的被抽到的次数
>n
[1]211123
>ind<-rep(ind,times=n)#按次数重复被抽到的样本编号
>ind
[1]113491212161616
>sample<-LETTERS[ind]#被抽到的字母
>sample
[1]"A""A""C""D""I""L""L""P""P""P"
2.不放回简单随机抽样
函数srswor(),格式和返回值同srswr(),注意返回值向量中只有0和1.
>s<-srswor(10,26)
>s
[1]10000101001000000111001
[24]101
>ind<-(1:
26)[s!
=0]
>ind
[1]16811181920232426
>sample<-LETTERS[ind]
>sample
[1]"A""F""H""K""R""S""T""W""X""Z"
3.函数simple()
实现有放回和不放回的简单随机抽样,根本格式为:
sample(x,size,replace=FALSE)
其中,x为数据集;size为抽取样本数;replace指定是否放回,默认为FALSE〔不放回〕,TURE为有放回。
也可对数据进展随机分组:
sample(num,size,replace=TRUE,prob=NULL)
其中,num为分组数;size为抽取样本数;replace必须为TRUE;prob为权重向量〔分组比例〕。
>sample(LETTERS,10,replace=TRUE)#有放回简单随机抽样
[1]"K""C""E""J""Z""C""W""E""G""B"
>sample(LETTERS,10,replace=FALSE)#无放回简单随机抽样
[1]"I""S""T""A""D""Q""R""X""J""P"
#将26个字母随机分为两组,比例是0.7:
0.3
>n<-sample(2,26,replace=TRUE,prob=c(0.7,0.3))
>n
[1]11122111211221211111122
[24]111
>sample1<-LETTERS[n==1]#第1组
>sample1
[1]"A""B""C""F""G""H""J""K""N""P""Q"
[12]"R""S""T""U""X""Y""Z"
>sample2<-LETTERS[n==2]#第2组
>sample2
[1]"D""E""I""L""M""O""V""W"
主要参考文献:
[1]良均,佳标,坦,肖刚.R语言与数据挖掘.机械工业,2021.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 系列 06 修改 变量 数据 排序 随机 抽样
![提示](https://static.bdocx.com/images/bang_tan.gif)