首页 理论教育 不同行业的数据集中的数据和变量命名方法,病例数据集的解析及使用建议

不同行业的数据集中的数据和变量命名方法,病例数据集的解析及使用建议

时间:2023-06-28 理论教育 版权反馈
【摘要】:数据集不同的行业对于数据集的行和列叫法不同。表1.3 病例数据R语言提供了许多数据对象,包括标量、向量、数组、数据框和列表。在表1.3中,PatientID、AdmDate和Age为数值型变量,而Diabetes和Status为字符型变量。表1.3所示的病例数据集包含了数值型和字符型数据。在这种情况下,使用数据框是最佳选择。年龄Age就是一个连续型变量,它能够表示像14.5或22.8这样的值以及其取值范围内的其他任意值。

不同行业的数据集中的数据和变量命名方法,病例数据集的解析及使用建议

(1)数据集

不同的行业对于数据集的行和列叫法不同。统计学家称它们为观测(Observa-tion)和变量(Variable),数据库分析师则称其为记录(Record)和字段(Field),数据挖掘/机器学习学科的研究者则把它们叫作示例(Example)和属性(Attribute)。在本书中通篇使用术语观测和变量。

从表1.3可以清楚地看到此数据集的结构(本例中是一个数据框)以及其中包含的内容和数据类型。其中,PatientID是实例标识符,AdmDate是日期型变量,Age是整型变量,Diabetes是名义型变量,Status是有序型变量。

1.3 病例数据

978-7-111-57073-8-Chapter01-16.jpg

R语言提供了许多数据对象,包括标量、向量、数组、数据框和列表。多样化的数据对象赋予了R语言极其灵活的数据处理能力。

R语言可以处理的数据类型(模式)包括数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)。在表1.3中,PatientID、AdmDate和Age为数值型变量,而Diabetes和Status为字符型变量。另外,需要分别告诉R,Pa-tientID是实例标识符,AdmDate是日期数据,Diabetes和Status分别是名义型和有序型变量。R语言将实例标识符称为行名(Rownames),将类别(包括名义型和有序型)变量称为因子(Factors),或称为响应变量、决策变量,或类别变量。

(2)数据对象

R语言提供了图1.10所示的数据对象。

978-7-111-57073-8-Chapter01-17.jpg

图1.10 R语言中的数据对象

a)向量 b)矩阵 c)数组 d)数据框 e)数据框

1)向量。

向量是用于存储数值型、字符型或逻辑型数据的一维数组。函数c()可用来创建向量。如:

a<-c(1,2,3,4)

b<-c("US","CHINA","ENGLISH")

c<-c(TRUE,TRUE,FALSE)

这里,a是数值型向量;b是字符型向量;而c是逻辑型向量。

说明1:单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。

说明2:标量是只含一个元素的向量,例如f<-3、g<-"US"和h<-TRUE。它们用于保存常量。

通过在方括号中给定元素所处位置的数值,可以访问向量中的元素。例如,a[c(2,4)]用于访问向量a中的第二个和第四个元素。更多示例如下:

a[2:4] #访问第2,3,4个元素

a[3] #访问第3个元素

2)矩阵。

矩阵是一个二维数组,只是每个元素都拥有相同的类型(数值型、字符型或逻辑型)。可通过函数matrix创建矩阵。一般使用格式如下:

978-7-111-57073-8-Chapter01-18.jpg

其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充。

【例1.1】定义5×4矩阵的两种方式。

方法1:

978-7-111-57073-8-Chapter01-19.jpg

方法2:

978-7-111-57073-8-Chapter01-20.jpg

可以使用下标和方括号来选择矩阵中的行、列或元素。

y[i,]返回矩阵y中的第i行;

y[,j]返回矩阵y第j列;

y[i,j]返回矩阵y第i行第j列元素。

选择多行或多列时,下标ij可为数值型向量,如y[c(1,3),c(2:4)]。

注意:R语言中的下标不是从0开始,而是从1开始。

3)数组。

数组(Array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建,形式如下:(www.xing528.com)

myarray<-array(vector,dimentins,dimnames)

其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。

如下代码给出了一个创建三维(2×3×4)数值型数组的示例:

z<-array(1:24,c(2,3,4))

数组是矩阵的一个自然推广。它们在编写新的统计方法时可能很有用。像矩阵一样,数组中的数据也只能是同类型。

从数组中选取元素的方式与矩阵相同。例如,元素z[1,2,3]为15。

4)数据框。

由于不同的列可以包含不同类型(数值型、字符型等)的数据,数据框的概念较矩阵来说更为一般。数据框是在R语言中最常处理的数据对象。

表1.3所示的病例数据集包含了数值型和字符型数据。由于数据有多种类型,无法将此数据集放入一个矩阵。在这种情况下,使用数据框是最佳选择。

数据框可通过函数data.frame()创建:

x<-data.frame(col1,col2,col3,…)

其中的列向量col1,col2,col3,…可为任何类型(如字符型、数值型或逻辑型)。

数据框的引用与矩阵一样,例如,x[1:3,],x[2,c(2,4)],除此之外,增加通过变量引用数据框元素的方法,如把表1.3的数据框定义为x,则x$age等价于x[,3]。

5)因子。

变量可归结为名义型、有序型或连续型变量。名义型变量是指没有顺序之分的类别变量。例如,糖尿病类型Diabetes(Type1,Type2)是名义型变量的一例。即使在数据中Type1编码为1,而Type2编码为2,这也并不意味着二者是有序的。有序型变量表示的是一种顺序关系,而非数量关系。例如,病情Status(poor,improved,ex-cellent)是顺序型变量的典型示例。我们知道,病情为Poor(较差)病人的状态不如Improved(病情好转)的病人,但并不知道相差多少。连续型变量可以呈现为某个范围内的任意值,并同时表示了顺序和数量。年龄Age就是一个连续型变量,它能够表示像14.5或22.8这样的值以及其取值范围内的其他任意值。

类别变量(名义型变量、响应变量)和有序类别(有序型)变量在R语言中称为因子(Factor)。因子在R语言中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现。

函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1…k](其中k是变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。

举例来说,假设有向量:

diabetes<-c("type1","type2","type1","type1")

语句diabetes<-factor(diabetes)将此向量存储为(1,2,1,1),并在内部将其关联为1=Type1和2=Type2(具体赋值根据字母顺序而定)。针对向量diabetes进行的任何分析都会将其作为名义型变量对待,并自动选择适合这一测量尺度的统计方法。

要表示有序型变量,需要为函数factor()指定参数ordered=TRUE。给定向量:

status<-c("Poor","Improved","Excellent","Poor")

语句status<-factor(status,ordered=TRUE)会将向量编码为(3,2,1,3),并在内部将这些值关联为1=Excellent、2=Improved以及3=Poor。

对于字符型向量,因子的水平默认依字母顺序创建,这对于因子status是有意义的,因为“Excellent”“Improved”“Poor”的排序方式恰好与逻辑顺序相一致。如果“Poor”被编码为“Ailing”,会有问题,因为顺序将为“Ailing”“Excellent”“Im-proved”。如果理想中的顺序是“Poor”“Improved”“Excellent”,则会出现类似的问题。按默认的字母顺序排序的因子很少能够让人满意。

可以通过指定levels选项来覆盖默认排序。例如:

status<-factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))

各水平的赋值将为1=Poor、2=Improved、3=Excellent。需保证指定的水平与数据中的真实值相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为默认值。

6)列表。

列表(List)是R语言的数据类型中最为复杂的一种。一般来说,列表就是一些对象或成分(Component)的有序集合。列表允许整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数list()创建列表:

mylist<-list(object1,object1,…)

其中的objecti可以是目前为止讲到的任何结构。

【例1.2】

g<-"my first list" #定义字符串

h<-c(26,26,18,29) #定义长度为4的数值向量

j<-matrix(1:10,nrow=5) #定义5×2矩阵

k<-data.frame(c(1,2),c(3,4)) #定义数据框

mylist<-list(title=g,ages=h,j,k) #定义列表

mylist

也可以通过在双重方括号中指明代表某个成分的数字或名称来访问列表中的元素。此例中,mylist[[2]]和mylist[["ages"]]均指那个含有四个元素的向量。由于以下两个原因,列表成为R中的重要数据结构:首先,列表允许以一种简单的方式组织和重新调用不相干的信息;其次,许多R函数的运行结果都是以列表的形式返回的,需要取出其中哪些成分由分析人员决定。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈