R action 2

20171205(从有道迁移)

数据集

  1. 数据类型(模式)包括:数值型、字符型、逻辑型(TRUE/FALSE)、复数型(虚数)和原生型(字节)

  2. R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表

    • 标量
      • 是只含一个元素的向量,例如f <- 3、g <- "US"和h <- TRUE。它们用于保存常量
    • 向量
      • 向量是用于存储数值型、字符型或逻辑型数据的一维数组
      • 执行组合功能的函数c()可用来创建向量
      • 单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。==如果采用混杂模式,则会统一变成字符型数据==
      • 通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。例如,a[c(2, 4)]用于访问向量a中的第二个和第四个元素
      a<-c(1,2,5,3,6,-2,4)
      a[2]
      a[c(1,3,5)]
      a[2:6]
      
    • 矩阵
      • 矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)
      • 可通过函数matrix创建矩阵
      • matrix(vector, nrow = number_of_rows , ncol = number_of_columns, byrow = logical_value, dimnames = list(char_vector_rownames,char_vector_colnames)),
        • vector包含矩阵的元素
        • nrow和ncol分别指定行和列的维数
        • dimnames包含了可选的以字符串向量表示的行名和列名
        • 选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充
      • 使用下标和方括号来选择矩阵中的行、列或元素
        • X[i,]指矩阵X中的第i 行
        • X[,j]指第j 列
        • X[i, j]指第i 行第j 个元素
        • 选择多行或多列时,下标i 和j 可为数值型向量
      cells <- c(1,26,24,68)
      rnames <- c("R1","R2")
      cnames <- c("C1","C2")
      mymatrix <- matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
      mymatrix[2,]
      mymatrix[,2]
      mymatrix[1,c(1,2)]
      
    • 数组
      • 数据与矩阵类似,但是纬度可以大于2
      • 通过array创建数组
      • 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[1,2,3]
      z[c(1,2),1,1]
      
    • 数据框
      • 数据框不同的列可以包含不同模式(数值型、字符型等)的数据
      • 数据框可通过函数data.frame()创建
      • data.frame(col1,col2,col3,...)
        • 其中的列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)
        • 每一列的名称可由函数names指定
      patientID <- c(1:4)
      age <- c(25,34,28,52)
      disbetes <- c("Type1","Type2","Type1","Type1")
      status <- c("Poor","Improved","Excellent","Poor")
      patientdata <- data.frame(patientID,age,disbetes,status)
      
      • 选取数据框中元素的方式有若干种。你可以使用前述(如矩阵中的)下标记号,亦可直接指定列名
      • $用来选取一个给定数据框中的某个特定变量
      patientdata[1,3]  -- 指定某行某列的值
      patientdata[1:3]  -- 指定1到3列的所有行值
      patientdata[c("disbetes","status")] -- 指定列名
      patientdata$age 指定age列
      
      • 实例标识符:用于区分数据集中不同的个体。在R中,实例标识符(case identifier)可通过数据框操作函数中的rowname选项指定
      patientdata <- data.frame(patientID,age,disbetes,status,row.names=patientID)
      
    • 数据集操作
      • attach函数
        • 函数attach()可将数据框添加到R的搜索路径中;
        • R在遇到一个变量名以后,将检查搜索路径中的数据框,以定位到这个变量
        • attach(what, pos = 2L, name = deparse(substitute(what)), warn.conflicts = logical_value,default TRUE)
        summary(mtcars$mpg)
        attach(mtcars)
        summary(mpg)
        
      • detach函数
        • 函数detach()将数据框从搜索路径中移除
        detach(mtcars)
        summary(mpg)  -- 找不到mpg
        
      • with函数
        • 只在with函数范围内将数据框添加到R的搜索路径中
        with(mtcars,{
              summary(mpg)
              plot(mpg,disp)
          })
          
        --如果不是使用换行,则需要在语句后用;进行分隔
        with(mtcars,{summary(mpg);plot(mpg,disp)})
        
    • 因子
      • 变量可归结为名义型(唯一标识或者不同序列值)、有序型(有先后顺序的一系列值)或连续型变量(呈现为某个范围内的任意值,并同时表示了顺序和数量)。
      • 类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)
      • 函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1... k ](其中k 是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上
      diabetes <- c("Type1","Type2","Type1","Type1")
      diabetes <- factor(diabetes)将此向量存储为(1, 2, 1, 1),并在内部将其关联为1=Type1和2=Type2
      
    • 列表
      • 列表就是一些对象(或成分,component)的有序集合。
      • 列表允许你整合若干(可能无关的)对象到单个对象名下
      • 函数list()创建列表:mylist <- list(object1, object2,...)
      • 为列表中的对象命名:mylist <- list(name1=object1, name2=object2, ...)
      mylist <- list(title=g,ages=c,j,k)
      mylist[[2]]
      mylist[["ages"]]
      
  3. 数据输入

    • RGui输入数据,用 mydata <- edit(mydata),就能够编辑已经输入的数据并添加新的数据
    • 从带分隔符的文本文件导入数据
      • mydataframe <- read.table(file,header=logical_value,sep="delimiter",row.names="name")
        • file是一个带分隔符的ASCII文本文件
        • header是一个表明首行是否包含了变量名的逻辑值(TRUE或FALSE)
        • sep用来指定分隔数据的分隔符, 可以使用sep="\t"读取以制表符分隔的文件。默认值为sep="",即表示分隔符可为一个或多个空格、制表符、换行符或回车符
        • row.names是一个可选参数,用以指定一个或多个表示行标识符的变量
        • stringsAsFactors=FALSE,禁止字符型变量转换成因子
        • colClasses为每一列指定一个类,例如logical(逻辑型)、numeric(数值型)、character(字符型)、factor(因子)
    • RODBC访问数据库&Excel数据(32bite Windows only)
      • RODBC包访问一个数据库,有其他包

        • 安装包install.packages("RODBC")
        • 加载包library("RODBC")
        • 访问Excel命令
        channel <- odbcConnectExcel(file)
        mydataframe <- sqlFetch(channel,"mysheet")
        odbcClose(channel)
        
        • 访问数据库命令
        函数 描述
        odbcConnect(dsn,uid="",pwd="") 建立一个到ODBC数据库的连接
        sqlFetch(channel,sqltable) 读取ODBC数据库中的某个表到一个数据框中
        sqlQuery(channel,query) 向ODBC数据库提交一个查询并返回结果
        sqlSave(channel,mydf,tablename=sqtable,append=FALSE) 将数据框写入或更新(append=TRUE)到ODBC数据库的某个表中
        sqlDrop(channel,sqtable) 删除ODBC数据库中的某个表

        close(channel) 关闭连接

      • xlsx特殊格式,使用xlsx包,其他包可以到。。找

  4. 数据集标注

    • 目的:为某个列名或者数据值添加明显的名称以此来识别或者标注
    • 可以采用值标签的方式patientdatagender <- factor(patientdatagendar,levels=c(1,2),labels=c("male","female"))来创建标签值,这里levels代表变量的实际值,而labels表示包含了理想值标签的字符型向量
  5. 处理数据对象的实用函数

    函数 用途
    length(object) 显示对象中元素/成分的数量
    dim(object) 显示某个对象的维度
    str(object) 显示某个对象的结构
    class(object) 显示某个对象的类或类型
    mode(object) 显示某个对象的模式
    names(object) 显示某对象中各成分的名称
    c(object, object,…) 将对象合并入一个向量
    cbind(object, object, …) 按列合并对象
    rbind(object, object, …) 按行合并对象
    Object 输出某个对象
    head(object) 列出某个对象的开始部分
    tail(object) 列出某个对象的最后部分
    ls() 显示当前的对象列表
    rm(object, object, …) 删除一个或更多个对象。语句rm(list = ls())将删除当前工作环境中的几乎所有对象*

    newobject <- edit(object) 编辑对象并另存为newobject
    fix(object) 直接编辑对象

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

推荐阅读更多精彩内容