16. 数据整合Ⅰ—基本操作
目录:
一. 数据框创建新变量 二、变量的重命名 三. 变量的重新编码 四. 数据排序 五. 数据合并 六. 选取数据的子集 七. 简单的随机抽样 正文:
一、数据框创建新变量
假设有MyData数据框,其中变量为x1,x2. 现创建名为sumx和meanx的新变量,分别存储变量x1与x2的加和与均值。
#方法1
MyData$sumx<- MyData$x1 + MyData$x2
MyData$meanx<- (MyData$x1 + MyData$x2)/2 #方法2
attach(MyData)
MyData$sumx<- x1+x2
MyData$meanx<- (x1+x2)/2 detach(MyData) #方法3(建议方法)
MyData<- transform(MyData,
sumx = x1 + x2,
meanx = (x1+x2)/2)
二、变量的重命名 1. 用交互式编辑器
若修改数据集x的变量名,键入函数fix(x),即可打开交互式编辑器界面。
score<-data.frame(student=c(\c(\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=\
其中,oldname为原变量名,newname为新变量名。
library(reshape)
rename(score,c(pl=\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=\$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]=\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]=\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
三、变量的重新编码
例如,数据集Leader中连续型变量age重新编码为分类型变量rankAge (Young、Middle Aged、Elder)。
首先,必须把99岁的年龄值重新编码为缺失值:
Leader$age[Leader$age == 99] <-NA
然后创建rankAge变量:
Leader$rankAge[Leader$age>75] <- \ Leader$rankAge[Leader$age>=50 &Leader$age<=75] \
Leader$rankAge[Leader$age<50] <- \
<-
或者
Leader<-within(Leader, { rankAge<-NA
rankAge[age>75] <- \
rankAge[age>=50 & age<=75]<-\rankAge[age<50] <- \
四、数据排序
1.函数sort(),基本格式:
sort(x,decreasing=FALSE, na.last= FALSE,...)
其中,
x为排序对象(数值型或字符型);
decreasing默认为FALSE即升序,TURE为降序;