R数据结构之因子
定义:类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1... k ](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。
①表示字符型向量
假设有向量diabetes<-c("Type1","Type2","Type1","Type1")
语句diabetes<-factor(diabetes)将词向量存储为(1,2,1,1),并在内部将其关联为1=Type1和2=Type2。(具体赋值根据字母顺序而定)
②表示有序型向量
假设有向量status<-c("Poor","Improved","Excellent","Poor")
语句status<-factor(status,ordered=True会将向量编码为(3,2,1,3),并在内部将这些值关联为1=Excellent、2=Improved以及3=Poor。
你可以通过指定levels选项来覆盖默认排序。
例如:
status<-factor(status,ordered=TRUE,levels=c("Poor","Improved","Excellent"))
各水平的赋值将为1=Poor、2=Improved、3=Excellent。
patientID<-c(1,2,3,4)
age<-c(25,34,28,52)
diabetes<-c("Type1","Type2","Type1","Type1")
status<-c("Poor","Improved","Excellent","Poor")
diabetes<-factor(diabetes)
status<facotr(status,ordered=TRUE)
patientdata<-data.frame(patientID,age,diabetes,status)
str(patientdata) #显示对象结构
summary(patientdata) #显示对象的统计概要
输出结果:
代码解释:
首先,以向量的形式输入了数据 。然后,将diabetes和status分别指定为一个普通因子和一个有序型因子。最后,将数据合并为一个数据框。函数str(object)可提供R中某个对象(本例中为数据框)的信息 。它清楚地显示diabetes是一个因子,而status是一个有序型因子,以及此数据框在内部是如何进行编码的。注意,函数summary()会区别对待各个变量 。它显示了连续型变量age的最小值、最大值、均值和各四分位数,并显示了类别型变量diabetes和status(各水平)的频数值。
小结:当要对字符串型和有序型数据进行标准化时,可使用因子的形式将其数字标准化,分类代表不同的类型,便于接下来的数据分析。