R语言入门2:数据结构-3

6. 因子(farcor)

在R语言中,因子是用来处理分类数据的,分类数据又可以分为有序和无序。我们可以把因子简单理解为整数向量+标签。比如,我们把性别(男,女)分别加上标签(1和2),那么1就代表男,2就代表女。

(1)如何创建因子

# 使用factor()函数创建因子
> x <-factor(c("female","female","male","male","female"))
> x
[1] female female male   male   female #因子的内容
Levels: female male  #因子包含两个水平
# 创建因子时添加标签
> y<-factor(c("female","female","male","male","female"),levels = c("male","female")) # 使用levels()添加水平参数
> y
[1] female female male   male   female #因子的内容不变
Levels: male female # 水平的顺序发生了改变

当我们使用R进行统计分析时,可以通过因子指定分析的基线水平,这在统计分析中时非常重要的。

(2)对因子的操作

# 使用table()函数统计因子各水平的个数
> table(y)
y
  male female 
     2      3
# 使用unclass()函数去掉因子的水平
> unclass(y)
[1] 2 2 1 1 2
attr(,"levels") 
[1] "male"   "female"

前面我们提高过,可以把因子简单理解为整数向量+标签。如果使用uncalss()函数去掉因子的水平后,再查看其属性,会发生什么呢?

> class(unclass(y))
[1] "integer" #变成了整数型向量

7.缺失值(missing value)

在R中缺失值有两种表示方式:NaN和NA。NaN一般用来表示数字的缺失,而NA可用来表示多种类型的缺失。因此,NA具有类型属性,比如integer NA(整数缺失)和character NA(字符缺失)等。

判断向量中是否含有与缺失值

# 创建一个含有NA类型缺失值的向量
> x<- c(1,2,NA,3,NA,5)
> is.na(x) # 使用is.na()函数查看是否含有NA
[1] FALSE FALSE  TRUE FALSE  TRUE FALSE
> is.nan(x) #使用is.nan()查看是否含有NaN
[1] FALSE FALSE FALSE FALSE FALSE FALSE
# 创建一个含有NaN和NA类型缺失值的向量
> x<- c(1,2,NA,3,NaN,5)
> is.na(x) # 使用is.na()函数查看是否含有NA
[1] FALSE FALSE  TRUE FALSE  TRUE FALSE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE  TRUE FALSE  #使用is.nan()查看是否含有NaN

以上例子说明,is.na()函数可识别NA和NaN类型的缺失值,而is.nan()函数只能识别NaN类型的缺失值,而不能识别NA类型的缺失值。这也说明了,NA包含NaN。

8.数据框(data frame)

在R中,数据框是用来存储表格数据的。我们可以把数据框看做各元素长度相同的列表,每个元素代表一列数据,每个元素的长度代表行数,并且元素的类型可以不同。

(1)数据框的创建

# 使用data.frame()函数创建数据框
> def <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))
> def
  id name gender
1  1    a   TRUE
2  2    b  FALSE
3  3    c   TRUE
4  4    d   TRUE

由上面输出的结果可以看到,我们定义的第一个元素为数据框的第一列,第二个元素时数据框的第二列,第三个元素时数据框的第三类。并且,数据框和矩阵非常相似,所不同的是,矩阵中每一列中元素的类型都是一样的,而数据框可以不同。

同时,我们还可以把数据框看成列表,数据框的第一列对应于列表的第一个元素,数据框的第二列对应于列表的第二个元素,数据框的第三类对应于列表的第三个元素:

> def2 <- list(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))
> def2
$id
[1] 1 2 3 4

$name
[1] "a" "b" "c" "d"

$gender
[1]  TRUE FALSE  TRUE  TRUE

注:本文为我在慕课网课程R语言基础的学习笔记,使用Markdown写作。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容