R 语言基础3(因子、列表)

5 因子

变量可以分为名义型、有序性、或连续型变量。

🔴名义型变量:没有顺序之分的类别变量。

🔴有序类变量:表示一种顺序关系,而非数量关系。

🔴连续型变量:可以呈现为某个范围内的任意值并同时表示了顺序和数量。

例如:年龄就是一个连续型变量。

类别(名义型)变量和有序类别(有序型)变量在R中称为因子。

(1)函数factor()

以一个整数向量的形式存储类别值,将一个有字符串(原始值)组成的内部向量映射到这些整数上。

举个例子:

> hypertension <- c("yes","no","no","yes")
> hypertension <- factor(hypertension)              
> hypertension
[1] yes no  no  yes
Levels: no yes
> str(hypertension)
 Factor w/ 2 levels "no","yes": 2 1 1 2
> 

hypertension <- factor(hypertension) 很好理解,就是将向量存储为(2,1,1,2),并在内部将其关联为1=no 和 2=yes.赋值之后向量hypertension进行的任何分析都将其作为名义型变量对待并自动选择合适的统计方法。

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

对于水平的理解如下:

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

通过代码结果我们发现:x的长度通过length()函数得到是 4 而我们这里的水平对于x来说是 3 。也就意味着我们的数据谁碰x中不同数值的个数。

(2)表示有序变量

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

例:

> severity <- c("high","middle","low","middle")
> severity <- factor(severity,order=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

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

代码如下:

>severity <- factor(severity,order=TRUE,levels=c("low","middle","high"))
> severity
[1] high   middle low    middle
Levels: low < middle < high    //按照上面的levels=c()进行排序

下面通过一个代码来展示因子对于数据分析结果的影响

> IDnumber <- c(101,102,103,104)
> age <-c(24,78,56,45)
> hypertension <- c("yes","no","no","yes")
> severity <- c("high","middle","low","middle")
> hypertention<-factor(hypertension)
> severity <- factor(severity)
> patientdata <- data.frame(IDnumber,age,hypertension,severity)
> str(patientdata)
'data.frame':    4 obs. of  4 variables:
 $ IDnumber    : num  101 102 103 104
 $ age         : num  24 78 56 45
 $ hypertension: Factor w/ 2 levels "no","yes": 2 1 1 2
 $ severity    : Factor w/ 3 levels "high","low","middle": 1 3 2 3
> summary(patientdata)
    IDnumber          age        hypertension   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 

6 列表

列表就是一些对象(或成分)的有序集合,是R数据类型中最为复杂的一种。列表允许若干个(可能无关的)对象到单个对象名下。

用户可以通过list()创建列表:

Mylist <- list(object1,object2,……)

下面举个例子看一下:

> a <- "list example"
> x <- c(1,2,3,4,5)
> k <- c("one","two","three")
> matrix <- matrix(1:20,nrow=5,byrow=FALSE)
> mylist <- list(a,x,matrix,k)
> mylist
[[1]]
[1] "list example"    //字符串

[[2]]
[1] 1 2 3 4 5            //向量

[[3]]                        //矩阵
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20

[[4]]                            //字符型向量
[1] "one"   "two"   "three"

列表也可以像矩阵 数据框一样引用其中的元素

例如:

> mylist[[3]]
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20

列表成为R中重要的数据结构的两个原因:

1️⃣列表允许以一种简单的方式组织和重新调用不相干的信息

2️⃣许多R函数的运行结果都是以列表形式返回的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jqh.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值