R语言统计分析与应用-第二章-2

Hello,大家好,Dr.二哈又回来了。可能没什么人看,嗯,就说给自己听吧。 去年本来想继续更新的,结果12月初开题,从预开题开始就被训的不行,一直忙的焦头烂额。好不容易开题过了,结果后院又起火了,找师姐帮忙灭火之后,又开始重新处理之前的数据,还要忙着我爸妈和我老婆的父母见面~

汗~

不过现在稍微轻松点了,该弄的都差不多了。 于是我又回来了。 闲话不多说,继续去年未完成的第二章。

  1. 因子 变量可以分成三种,名义型,有序型以及连续型。名义型就是没有顺序之分的类别变量。而有序型则表示存在一种顺序关系,而非数量关系。连续型则可以呈现为某个范围内的任意值,并且可以同时表示顺序数量。比如年龄就是一个连续型变量。 类别(名义型)以及有序类别(有序型)变量,在R中,被称为因子。它的思想来源于统计学中的名义变量或分类变量,这些变量本质上不是数字,而是对应分类。例如血型,尽管可以用数字对其编码,但它还是分类的。 函数factor()可以以一个整数向量的形式存储类别值,将一个由字符串(原始值)组成的内部向量映射到这些整数上。
hypertention <- c("yes", "no", "no", "yes")
#下面这个语句将原来的hypertention向量存储为(2,1,1,2)
#并在内部将其关联为1=no,2=yes(根据字幕顺序而定)
#因此,针对向量hypertention进行的任何分析都会将其作为名义型变量对待
hypertention <- factor(hypertention)
hypertention
## [1] yes no  no  yes
## Levels: no yes
str(hypertention)
##  Factor w/ 2 levels "no","yes": 2 1 1 2

在R中,因子可以简单地理解为一个附加更多信息的向量。这额外的信息包括向量中不同值的记录,被称为“水平”

x <- c(5, 12, 13, 12)
x <- factor(x)
x
## [1] 5  12 13 12
## Levels: 5 12 13
str(x)
##  Factor w/ 3 levels "5","12","13": 1 2 3 2
length(x)
## [1] 4

这个例子中,x中不同数值(5,12,13)就是水平。x的核心是(1,2,3,2),意味着这个数据是由水平1,水平2和水平3的构成的。因此,数据已经重新编码成水平,当然,水平本身也被记录下来。要注意的是,因子的长度被定义为数据的长度,而不是水平的个数。 要表示有序型变量,需要为factor()指定参数ordered=TRUE。

severity <- c("high", "middle", "low", "middle")
#下面这个语句将向量编码为(1,3,2,3),并在内部将这些值关联为1=high,2=low以及3=middle
severity <- factor(severity, ordered = TRUE)
severity
## [1] high   middle low    middle
## Levels: high < low < middle
str(severity)
##  Ord.factor w/ 3 levels "high"<"low"<"middle": 1 3 2 3

值得注意的一点是,对于字符型向量,因子的水平默认按字母顺序创建,所以水平“high”,“middle”,“low”的排序与逻辑顺序不一致。 可以通过指定levels选项来覆盖默认排序。

severity <- factor(severity, ordered = TRUE, levels = c("low", "middle","high"))

这样就会按逻辑顺序排列了。 下面的一段代码将展示因子如何影响数据分析结果:

IDnumber <- c(101, 102, 103, 104)
age <- c(24, 78, 56, 45)
hypertention <- c("yes", "no", "no", "yes")
severity <- c("high", "middle", "low", "middle")
hypertention <- factor(hypertention)
severity <- factor(severity, ordered = TRUE)
patientdata <- data.frame(IDnumber, age, hypertention, severity)
str(patientdata)
## 'data.frame':    4 obs. of  4 variables:
##  $ IDnumber    : num  101 102 103 104
##  $ age         : num  24 78 56 45
##  $ hypertention: Factor w/ 2 levels "no","yes": 2 1 1 2
##  $ severity    : Ord.factor w/ 3 levels "high"<"low"<"middle": 1 3 2 3
summary(patientdata)
##     IDnumber          age        hypertention   severity
##  Min.   :101.0   Min.   :24.00   no :2        high  :1  
##  1st Qu.:101.8   1st Qu.:39.75   yes:2        low   :1  
##  Median :102.5   Median :50.50                middle:2  
##  Mean   :102.5   Mean   :50.75                          
##  3rd Qu.:103.2   3rd Qu.:61.50                          
##  Max.   :104.0   Max.   :78.00

嗯~~今天就到这里了。 有点短哈,不过反正也只是给自己看看的,这话说着好心酸啊。 自己学到了就好了。 再练会钢笔字就回寝室。

Avatar
Dr.二哈
在读苦逼科研狗

研究方向:脂质营养,业余时间自学R。

相关