R语言学习系列06-修改变量名,数据排序,随机抽样

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

06. 修改变量名,数据排序,随机抽样

一、变量的重命名

1. 用交互式编辑器

若修改数据集x的变量名,键入函数fix(x),即可打开交互式编辑器界面。

> score<-data.frame(student=c("A","B","C","D"),gende r=c("M","M","F","F"),math=c(90,70,80,60),Eng=c(88,78,69,9 8),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"))

student gender math Engchinese

1 A M 90 88 66

2 B M 70 78 59

3 C F 80 69 NA

4 D F 60 98 88

>rename(score.list,c(pl="chinese"))

$student

[1] A B C D

Levels: A B C D

$gender

[1] M M F F

Levels: F M

$math

[1] 90 70 80 60

$Eng

[1] 88 78 69 98

$chinese

[1] 66 59 NA 88

注意:原数据集中的变量名并未被修改。

3. 用函数names()

和rename()一样可用来修改数据框和列表的变量名,不能修改矩阵的变量名;区别在于:names()会在原数据集中修改变量名。

其基本格式为:

names(x)[i]<-"newname"

>names(score)[5]="chinese"

>score

student gender math Engchinese

1 A M 90 88 66

2 B M 70 78 59

3 C F 80 69 NA

4 D F 60 98 88

4. 用函数colnames()和rownames()

用来修改矩阵的变量名(行名和列名),也能修改数据框的行名和列名。基本格式为:

rownames(x)[i]<-"newname"

>colnames(score)[5]="Chinese"

>score

student gender math Eng Chinese

1 A M 90 88 66

2 B M 70 78 59

3 C F 80 69 NA

4 D F 60 98 88

>rownames(score)=letters[1:4]

>score

student gender math Eng Chinese

aA M 90 88 66

bB M 70 78 59

cC F 80 69 NA

dD F 60 98 88

二、数据排序

1.函数sort(),基本格式:

sort(x,decreasing=FALSE, st= FALSE,...)

其中,x为排序对象(数值型或字符型);decreasing默认为FALSE 即升序,TURE为降序;st默认为FALSE(NA值将被删除),若为TRUE,则将向量中的NA值放到序列末尾。

>sort(score$math)

[1] 60 70 80 90

>sort(score$math,decreasing = TRUE)

[1] 90 80 70 60

>sort(score$Chinese,st = TRUE)

[1] 59 66 88 NA

2.函数rank()

返回值是该向量中对应元素的秩(排名),基本格式为:

rank(x,st= FALSE,ties.method=...)

其中,ties.method指定对数据集中的重复数据的秩的处理方式:“average”——取平均值秩(默认)

“first”——位于前面的数据的秩取小,依次递增

“random”——随机定义重复秩

“max”——取最大重复秩

“min”——取最小重复秩

>x<-c(3,4,2,5,5,3,8,9)

>rank(x)

[1] 2.5 4.0 1.0 5.5 5.5 2.5 7.0 8.0

>rank(x,ties.method = "first")

[1] 2 4 1 5 6 3 7 8

>rank(x,ties.method = "random")

[1] 3 4 1 6 5 2 7 8

>rank(x,ties.method = "max")

[1] 3 4 1 6 6 3 7 8

3.函数order()

对数据进行排序,返回值是对应“排名”的元素所在向量中的位置,即最小值、次小值、...、最大值所在的位置。基本格式为:order(x,decreasing=FALSE, st= FALSE,...)

不同于前两个函数,order()还可以对数据框进行排序:data_frame[order(data_frame$v1, data_frame$v2, …),]

若v1值相同,则按v2升序排序;要将升序改为降序,在变量前添加负号,或用decreasing = TRUE即可。

>order(score$math)

[1] 4 2 3 1

>score[order(score$math),]

student gender math Engchinese

4 D F 60 98 88

2 B M 70 78 59

3 C F 80 69 NA

1 A M 90 88 66

>score[order(-score$math),]

student gender math Engchinese

1 A M 90 88 66

3 C F 80 69 NA

相关文档
最新文档