data.frame(数据框)是R语言中的一种数据结构,下面将从多个方面介绍data.frame的基本操作。
1.建立数据框
ID<-c(1,2,3,4)
age<-c(23,29,34,43)
diabetes<-c("Ty1","Ty2","Ty1","Ty1")
status<-c("poor","improved","excellent","poor")
patientdata<-data.frame(ID,age,diabetes,status)
其中patientdata即为数据框,它里面的每一列可以是不同的类型。
2.一些查看数据类型的指令
View(patientdata) #查看整个patientdata表(结果见下图)
> str(patientdata)
'data.frame': 4 obs. of 4 variables:
$ ID : num 1 2 3 4
$ age : num 23 29 34 43
$ diabetes: chr "Ty1" "Ty2" "Ty1" "Ty1"
$ status : chr "poor" "improved" "excellent" "poor"
patientdata<-data.frame(ID,age,diabetes,status,stringsAsFactors=T) #将列中的字符串类型转换为因子类型
#查看patientdata的类型
> class(patientdata)
[1] "data.frame"
> mode(patientdata)
[1] "list"
运行View指令后的结果
3.提取元素的指令
提取元素数据框的元素(与对矩阵操作类似)。
> patientdata[[2]] #提取第二列的值
[1] 23 29 34 43
> patientdata$age #提取age一列的值
[1] 23 29 34 43
> patientdata$age[2] #提取age一列的第二个元素
[1] 29
4.行列的添加
#添加列
> treatment<-c(1,0,1,1)
> patientdata$treatment<-treatment
> patientdata
ID age diabetes status treatment
1 1 23 Ty1 poor 1
2 2 29 Ty2 improved 0
3 3 34 Ty1 excellent 1
4 4 43 Ty1 poor 1
#添加行
> new=list(5,53,"Ty2","improved",0)
> rbind(patientdata,new)
ID age diabetes status treatment
1 1 23 Ty1 poor 1
2 2 29 Ty2 improved 0
3 3 34 Ty1 excellent 1
4 4 43 Ty1 poor 1
5 5 53 Ty2 improved 0
#在第3,4行之间添加行
> rbind(patientdata[1:3,],new,patientdata[4:length(patientdata),])
ID age diabetes status treatment
1 1 23 Ty1 poor 1
2 2 29 Ty2 improved 0
3 3 34 Ty1 excellent 1
4 5 53 Ty2 improved 0
41 4 43 Ty1 poor 1
NA NA NA <NA> <NA> NA
5.查看对应行列,元素的选取赋值
patientdata$ID<-NULL #删除ID所在的列
patientdata[c("age","ID")]<-NULL #删除多列
#筛选出patientdata中ID等于1,年龄大于30的数据
newdata<-patientdata[patientdata$ID==1&patientdata$age>30]
#用subset函数进行筛选
subset(patientdata,age>30&diabetes=="Ty1")
subset(patientdata,age>30|diabetes=="Ty1") #“|”表示或