数据库可以存储不同类型的数据,如数值型数据、字符型数据、逻辑型数据。当矩阵只能存放一种相同类型的数据时,而你拥有的多种不同类型的数据无法存储,此时数据框是最佳选择。
数据框通过data.frame()函数创建
其中的列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。
范例1:
patientID<-c(1,2,3,4)
age<-c(25,24,28,52)
diabetes<-c("Type1","Type2","Type1","Type1")
status<-c("Poor","Improved","Excellent","Poor")
patientdata<-data.frame(patientID,age,diabetes.status)
patientdata
输出结果:
每一列数据的类型必须唯一,不过你却可以将多个类型的不同列放到一起组成数据框。
如何选取数据框数据?
范例2:
patientdata[1:2]
输出结果:
选取范围为第1至第2列数据
范例3:
patientdata[c("diabetes","status")]
输出结果:
选取范围为名为diabetes和status的列
范例4:
patientdata$status
输出结果:
$被用来选取一个给定数据框中的某个特定变量。例如想生成成糖尿病类型变量diabetes和病情变量status的列联表,相应代码为:
table(patientdata$diabetes,patientdata$status)
输出结果:
此时会想,每次输入变量的时候都要输入输入框的名称,好麻烦!有什么办法可以简化,不用重复写data.frame名呢?
①attach()与detach()函数
函数attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路 径中的数据框,以定位到这个变量。
函数detach()将数据框从搜索路径中移除。值得注意的是,detach()并不会对数据框本身做任何处理。
范例5
attach(patientdata)
table(diabetes,status)
detach(patientdata)
输出结果:
注意:如果在数据框patientdata被绑定(attach)之前,我们的环境中已经有了一个名为diabetes或status的对象。
在这种情况下,原始对象将取得优先权,这与你想要的结果有所出入。
②with()函数
可以使用with()函数对上述代码重写
with(patientdata,{
a<-summary(age)
a
}
)
输出结果:
如果想保存变量到patientdata结构之外,使用特殊赋值符<<-替代标准赋值符(<-)即可,它可将对象保存到with()之外的全局环境中。
with(patientdata,{
a<-summary(age)
b<<-summary(age)
}
)
b
输出结果:
实例标识符
在病例数据中,病人编号(patientID)用于区分数据集中不同的个体。在R中,实例标识符(case identifier)可通过数据框操作函数中的rowname选项指定。例如,语句:
将patientID指定为R中标记各类打印输出和图形中实例名称所用的变量。
关于data.frame数据库的介绍至此