R语言实战-2创建数据集

第二天,继续学习R语言。

2.创建数据集

2.1数据集

数据构成的一个矩形数组,行表示观测,列表示变量。

2.2数据结构

标量:只含有一个元素的向量。

2.2.1向量

a<-c("k","j","h","a","c")
a[3] #访问向量中的第三个元素
a[c(1,3,5)]
a[2:5]

冒号的用法a<-c(2:6)等价于 a<-c(2,3,4,5,6)

2.2.2矩阵

矩阵:一个二维数组,可通过matrix()创建矩阵

mymatrix<-matrix(vetor,nrow = number_of_row,ncol = number_of_colums,
byrow = logical_value,dimnames = list(rownames,colnames))

将一个向量(第一个参数vector)转换为矩阵,
nrow指定行数,
ncol指定列数,
byrow TRUE或FALSE确定是按行排列还是按列排列(默认按列),dimnames指定行名和列名,行名和列名分别用向量表示。

y<-matrix(1:20,nrow = 5,ncol = 4) #创建一个5*4的矩阵
y
cells<-c(1,25,24,13)
rnames<-c("R1","R2")
cnames<-c("C1","C2")
mymatrix<-matrix(cells,nrow = 2,ncol = 2,byrow = TRUE,dimnames = list(rnames,cnames))
mymatrix

矩阵中元素的引用
x[2,]第二行
x[,2]第二列
x[1,4]第一行第四列元素
x[1,c(4,5)]第一行,第四第五个元素
维度超过2时,使用数组。有多重模式的数据时,使用数据框~

2.2.3数组

用array函数创建:

myarray<-array(vector,dimensions,dimnames)

其中第二个参数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

数组是矩阵的推广,其中的元素只能是一种模式。
上面的例子中Z[1,2,3]为15.

2.2.4数据框

数据框是R中最常处理的数据结构

mydataframe<-data.frame(col1,col2,col3);

每一列的名称可由names函数指定用以下两个方法进行;
比如:

names(study) <- c("wei","hei","gen")#修改列名
row.names(study)<-c("Mary","Alice","Bob","Judy")#修改行名
patientID<-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(patientID,age,diabetes,status)
patientdata
class(patientdata) #产看patientdata的类型
patientdata[1:2] #选了数据框第一列和第二列;
patientdata[1,2] #选的是第一行第二列的元素;
patientdata[1:2,] #选的是第一行第二行(注意没有逗号的时候默认是选择的列)
patientdata[c("diabetes","status")] #使用列名来选取元素
patientdata$age #选取数据框patientdata中age这一列

table()函数生成两个变量的列联表(即符合条件的个体数)

table(patientdata$diabetes,patientdata$status)

以上就是得到符合两个条件交叉的geti数量
attach()函数
attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名后,将检查搜索
路径中的数据框,以定位到这个变量。
举个栗子:

summary(mtcars$mpg)#生成四分位数及均值
plot(mtcars$mpg,mtcars$disp)
plot(mtcars$mpg,mtcars$wt)#等价于下列代码:
attach(mtcars)
summary(mpg)
plot(mpg,disp)
detach(mtcars) #注意用完后别忘再把变量从搜索路径中请出来

注意如果数据框中的变量与数据框外的变量同名,则attach(dataframe)会把数据
框外的变量留下来放在数据框中,即原有对象优先(而不是覆盖)!!!
上面的例子还可以用with()函数进行改写:

with(mtcars,{
summary(mpg,disp,wt)
plot(mpg,disp)
plot(mpg,wt)
})

以上模式是with(dataset,{statements})
注大括号内赋值的变量,仅在大括号内有效。若要让大括号内赋值的变量在大括号外有效的话,需要使用<<-这个符号赋值。
指定实例标识符
在创建数据框时指定:

patientdata<-data.frame(patientID,age,diabetes,status,row.names = patientID)

这里一定是row.names!!!

2.2.5因子

其实就是定类和定序类型的变量(也就是分类变量)
函数factor()以一个整数向量的形式存储类别值,取值范围是【1-k】,k是变量中唯一值的个数。
举个例子

diabetes<-c("Type1","Type2","Type1","Type1")
diabetes<-factor(diabetes)

将此向量存储为(1,2,1,1),并在内部关联1=Type1,2=Type2(复制的顺序是根据字母顺序定的)
有序的变量的话,需要加order=TRUE.
若是想要按照自己的顺序排列,需要使用levels选项:

status<-factor(status,ordered = TRUE,levels=c("Poor","Improved","Excellent"))

2.2.6列表

列表是一些对象的有序集合,可以整合若干向量、矩阵、数据框,甚至其他列表的组合。

mylist<-list(object1,object2)

2.3数据的输入

2.3.1键盘输入数据

创建空的数据框

mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))

编辑数据

mydata<-edit(mydata)
fix(mydata) #以上两句等效

2.3.2从带分隔符的文本文件导入数据

mydataframe<-read.table("file",header = logical_value,sep = "delimiter",row.names = "name")
header 表示文件是否在第一行包含了变量名的逻辑型变量
row.names用于指定行名,默认情况下,字符型变量将被转换为因子。
设置选项stringAsFactor=FALSE即可停止转换!!!
函数file(),gzfile(),unz(),url()可作为文件名参数使用~

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

推荐阅读更多精彩内容

  • 这学期开了统计机器学习的课程,鉴于薄弱的概率论与统计学基础,学着还比较吃力,但是R语言的实践,还是令人兴趣十足。接...
    CharlesSun9阅读 4,627评论 1 6
  • 初涉R语言这本书,看了前两章,有了如下总结。 1.首先是R语言数据分析的流程,如下图。 总结:R语言运行进行数据分...
    信步江湖阅读 2,257评论 0 1
  • 开始 开始R语言的学习已经有一段时间了,正在按计划开始学习,虽然年底有点忙还是坚持按计划进行学习,这是学习的第一...
    巍书生阅读 1,017评论 0 1
  • 2017年夏天开始学习R语言。 第1章 R语言介绍 1.1 R的获取和安装 下载Rgui:http://cran....
    弹跳骑士阅读 7,865评论 0 10
  • 今晚听到电视里的歌声于是又有妄想了T_T 很痛苦π_π
    Vivian菁阅读 112评论 0 1