R语言学习-数据集

数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量,对数据集的操作是数据分析的第一步

R语言的数据结构通常有以下几种:标量,向量,矩阵,数组,数据框和列表

向量

向量是用于存储数字型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量

> a<-c(1,2,3,4,5,6)
> b<-c("one","two","three")
> a
[1] 1 2 3 4 5 6
> b
[1] "one"   "two"   "three"

通常在方括号中给定元素所处位置的数值,对向量中的元素进行检索

> a<-c("k","j","h","a","c","m")
> a[5]
[1] "c"
> a[c(1,3,5)]
[1] "k" "h" "c"
> a[2:6]
[1] "j" "h" "a" "c" "m"

矩阵

矩阵是一个二维数组,每个元素的类型相同,通过函数matrix()创建矩阵

> y<-matrix(1:20,nrow=5,ncol=4)
> y
     [,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
> cells<-c(1,26,24,28)
> rnames<-c("R1","R2")
> cnames<-c("C1","C2")
> mymatrix<-matrix(cells,nrow = 2,ncol = 2,byrow = TRUE,dimnames = list(rnames,cnames))
> mymatrix
   C1 C2
R1  1 26
R2 24 28
#这个矩阵中,byrow=TRUE是选择行填充,dimnames是指定行名和列名

同样矩阵元素的检索也是用到方括号
X[i,]是选择矩阵的第i行,X[,j]是选择矩阵的第j列,X[i,j]选择矩阵第i行第j列的元素

> x<-matrix(1:10,nrow = 2)
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> x[2,]
[1]  2  4  6  8 10
> x[,5]
[1]  9 10
> x[2,5]
[1] 10

数组

数组与矩阵类似,到那时数组的维度可以大于2,数组可以通过array创建,一般格式如下
myarray<-array(vector,dimensions,dimnames)
vector包含了数组中的数据,dimensions是一个数值型向量,表示了维度的大小,dimnames则是指定维度的名称

> dim1<-c("A1","A2")
> dim2<-c("B1","B2","B3")
> dim3<-c("C1","C2","C3","C4")
> z<-array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3))
> z
, , C1

   B1 B2 B3
A1  1  3  5
A2  2  4  6

, , C2

   B1 B2 B3
A1  7  9 11
A2  8 10 12

, , C3

   B1 B2 B3
A1 13 15 17
A2 14 16 18

, , C4

   B1 B2 B3
A1 19 21 23
A2 20 22 24

数组的检索与矩阵的检索相似,通过方括号检索

数据框

数据框是R语言中最常用的数据集,它不同的列可以包含不同的数据类型
数据框可以通过data.frame创建
mtdata<-data.frame(col1,col2,col3....)
其中列向量col1,col2,col3可以为任何类型

> patienID<-c(1,2,3,4)
> age<-c(25,34,28,52)
> diabetes<-c("Type1","Type2","Type1","Type1")
> status<-c("Poor","Improved","Excellent","Poor")
> patientData<-data.frame(patienID,age,diabetes,status)
> patientData
  patienID age diabetes    status
1        1  25    Type1      Poor
2        2  34    Type2  Improved
3        3  28    Type1 Excellent
4        4  52    Type1      Poor

数据框的检索方式如下

> patientData[1,2]
[1] 25
> patientData[1:2]
  patienID age
1        1  25
2        2  34
3        3  28
4        4  52
> patientData[c("diabetes","status")]
  diabetes    status
1    Type1      Poor
2    Type2  Improved
3    Type1 Excellent
4    Type1      Poor
> patientData$age
[1] 25 34 28 52
# $用于选区给定数据框中某个特定的变量

因子

变量可分为名义型变量,有序型,连续型变量
名义型变量是没有顺序之分的类别型变量,如糖尿病的类型
有序型变量代表一种顺序关系,而非数量关系,比如病情的好坏,坏<好
连续型变量则同时表示了顺序和数量
名义型变量和有序型变量在R中称为因子
factor函数可以将变量转化为因子,如果要排序,则需要ordered=TRUE参数,levels可以指定排序顺序

> 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<-factor(status,ordered = TRUE)
> patientData<data.frame(patientID,age,diabetes,status)
Error: object 'patientData' not found
> patientData<-data.frame(patientID,age,diabetes,status)
> str(patientData)#显示数据结构
'data.frame':   4 obs. of  4 variables:
 $ patientID: num  1 2 3 4
 $ age      : num  25 34 28 52
 $ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
 $ status   : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientData)#统计数据框各变量
   patientID         age         diabetes
 Min.   :1.00   Min.   :25.00   Type1:3  
 1st Qu.:1.75   1st Qu.:27.25   Type2:1  
 Median :2.50   Median :31.00            
 Mean   :2.50   Mean   :34.75            
 3rd Qu.:3.25   3rd Qu.:38.50            
 Max.   :4.00   Max.   :52.00            
       status 
 Excellent:1  
 Improved :1  
 Poor     :2  

列表

列表是R中数据集最为复杂的一种,是一些对象的有序集合
可以使用list()函数创建列表
mylist<-list(object1,object2.....)

 > g<-"My Frist List"
> h<-c(25,26,18,39)
> j<-matrix(1:10,nrow=5)    
> k<-c("one","two","three")
> mylist<-list(title=g,ages=h,j,k)
> mylist
$title
[1] "My Frist List"

$ages
[1] 25 26 18 39

[[3]]
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

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

推荐阅读更多精彩内容