R数据结构之数据框

数据库可以存储不同类型的数据,如数值型数据、字符型数据、逻辑型数据。当矩阵只能存放一种相同类型的数据时,而你拥有的多种不同类型的数据无法存储,此时数据框是最佳选择。

数据框通过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数据库的介绍至此

你可能感兴趣的:(R数据结构之数据框)