您的位置:68399皇家赌场 > 集群主机 > RAV4 语言-基础

RAV4 语言-基础

发布时间:2019-05-03 02:06编辑:集群主机浏览(134)

     

    数据类型

    • 驷比不上舌的数据类型:

      • 数值型:numeric
      • 逻辑型:logical(T/TRUE F/FALSE)
      • 字符型:character
      • 复数型:complex(a bi)
      • 原味型:raw(二进制数据)
      • 缺省型:missing value(NA/not available)

      有关数据类型的详尽介绍和操作参见另一篇课程笔记:R魔02_笔记_数据类型。

    • 查阅数据:

      1. 翻看当前系统里的数量对象,再次来到变量名:ls()

      2. 分辨和转移数据类型:

        类型            辨别                转换
        character       is.character()      as.character()
        complex         is.complex()        as.complex()
        double          is.double()         as.double()
        integer         is.integer()        as.integer()
        logical         is.logical()        as.logical()
        NA              is.na()             as.na()
        numeric         is.numeric()        as.numeric()
        

    2.5 管理数据对象的实用函数

     

    数据结构

    • 数据结构包罗:
      • 向量
      • 矩阵
      • 数组
      • 数据框
      • 因子factor/名义或阶段
    1. 向量:c()

      • 间接创制向量:同平素量中的数据必须是同3个品类的。
      > a <- c(1, -2, 3, -4, 5, 0)
      > b <- c("age","name" , "weight") 
      > C <- c(TRUE, TRUE, FALSE, FALSE) 
      
      > a <- c(2:6)     # 冒号"n:m"表示从n到m,包含n和m。
      # 等价于
      > a <- c(2, 3, 4, 5, 6)
      
      > r <- c(5:1)     #逆序
      > r
      5 4 3 2 1 
      
      # 冒号运算的结果其实也是个向量
      > 2*1:5             #表达式中:的级别最高
      [1] 2 4 6 8 10
      
      • 用函数生成向量:
      # 1. 生成有规律的序列 
      > seq(1,10,2)                   # seq(from, to, by),从1到10,间隔为2。
      [1] 1 3 5 7 9
      > seq(1, by=2, length=10)       #从1开始,间隔为2,总共要10个数。
      [1] 1 3 5 7 9 11 13 15 17 19
      
      > letters[1:30]             #生成字母序列,abcd,26个,第26之后的值为NA
      
      # 2. 重复
      > rep(c(1,2),4)                 # 向量整体4次
      [1] 1 2 1 2 1 2 1 2
      > rep(c(1,2),each=4)            # 按元素重复
      [1] 1 1 1 1 2 2 2 2
      > rep(c(1,2,3,4),c(5,3,4,2))    # 向量元素分别重复5432次。必须一样长。
      [1] 1 1 1 1 1 2 2 2 3 3 3 3 4 4
      
      • 选拔向量中的成分
      > a <- c(1, -2, 3, -4, 5, 0)
      > a[3]
      [1] 3
      
      > a[2,3]            # 选择两个
      [1] -2 3
      
      > a[1:4]            # 选择多个连续
      1 -2 3 -4
      
      > a[-2]             # 去掉第2个元素
      1 3 -4 5 0
      
      # 用向量选择
      > a[c(1,3,4)]       # 一定要有c()函数,a[1,2,3]是错的
      
      # 布尔
      > a[a<3]            # 列出小于3的元素
      
      • 用which()函数采取
      which.max(a)        #()里是向量名。返回下标。
      which.min(a)
      a[which.max(a)]     #返回最大值
      which(a==2)         #所有等于2的元素,的位置/下标。
      which(a>3)
      

      留意:向量不可能增添或删除成分。退换向量需求再度赋值。

      • 附:常用的向量总结函数

        sum()           #求和
        max()           #求最大值
        min()           #求最小值
        range()         #求极差(全矩)
        mean()          #均值
        median()        #中数
        var()           #方差
        sd()            #标准差
        sort()          #排序,从小到大
        rev()           #反向排列rev(sort())
        rank()          #给出向量的秩(每个元素的排名)
        prod()          #向量的连乘积
        append()        #添加元素
        replace()       #替换
        match()         #匹配
        pmatch()        #部分匹配
        all()           #判断所有
        any()           #判断部分
        
    2. 矩阵:matrix()私下认可按列生成

      • 创立矩阵
      > y <- matrix(1:20, nrow=5, ncol=4)
           [,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,4,6,10)
      > rname <- c("r1","r2")
      > cname <- c("c1","c2")
      > mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rname, cname))
      mymatrix        #byrow=TRUE按行填充
          c1  c2
      r1  1   4
      r2  6   10
      
      > diag(1:4)                 #生成对角矩阵
         [,1] [,2] [,3] [,4]
      [1,] 1 0 0 0
      [2,] 0 2 0 0
      [3,] 0 0 3 0
      [4,] 0 0 0 4
      > diag(4)                   #4阶单位阵
         [,1] [,2] [,3] [,4]
      [1,] 1 0 0 0
      [2,] 0 1 0 0
      [3,] 0 0 1 0
      [4,] 0 0 0 1
      
      • 矩阵索引
      mymatrix <- matrix(1:20, nrow=5, ncol=4)
      > mymatrix[1,2]       #选择矩阵里的元素[行, 列]
      6
      > mymatrix[1:2,2:3]   #第1 2行,2 3列的元素
           [,1] [,2]
      [1,]    6   11
      [2,]    7   12
      
      • 矩阵的演算
      A 10                #所有元素加10
      A*2                 #所有元素乘2
      A*A                 #所有元素乘自己
      A%*%B               #矩阵相乘【A(m,n)的列数(column)与B(n,p)的行数(row)相同才行,得到是一个m行,p列的矩阵】
      dim()               #返回行、列数(如果是array,返回每个维度的行列数
      str(object)         #显示某个对象的结构
      class(object)       #显示某个对象的类或类型
      nrow()              #返回行数
      ncol()              #返回列数
      solve()             #返回逆矩阵【逆矩阵:两个矩阵相乘等于一个单位矩阵(见上)】
      solve(a,b)          #a*x=b,求x。得出的是x的值。
      as.matrix()         #把非矩阵的转换成矩阵
      is.matrix()         #辨别是否矩阵
      diag()              #返回对角元素或生成对角矩阵
      eigen()             #求特征值和特征向量
      chol()              #Choleski 分解  【???】
      svd()               #奇异值分解     【???】
      qr()                #QR 分解        【???】
      det()               #求行列式
      t()                 #矩阵转置
      apply(X, MARGIN, FUN, ...)      #对矩阵应用函数。x:矩阵名;MARGIN:运算范围,1/按行运算,2/按列运算;FUN:调用的函数。得到一个向量。
      rbind()             #合并两个或两个以上的矩阵,按行合并。(列数不变
      cbind()             #按列合并。(行数不变
      
    3. 数组:函数array()

      • 粗略说一下。
      > 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
      
    4. 数据框:最广大的数据结构data.frame()

      • 矩阵情势的数量必须是同一等级次序的,但多少框中各列能够是见仁见智品类的数额。
      • 每壹列长度壹致。能够是向量、因子、数据矩阵、列表、或其余数据框。
      • 字符向量会被威迫转变到因子
      > 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
        patientID 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]           # 选取列
      patientdata[1:2,]          # 选取行
      patientdata[c("diabetes","status")]     # 用列名选取
      patientdata$age                         # 用列名选取的另一种方法
      table(patientdata$diabetes, patientdata$status)       # 名义变量做交叉列联表。
      
      • 应用attach()/detach()和with():能够不用写数据框的名字,直接用数据库中列名。
      attach(patientdata)
      summary(age)
      detach(patientdata)
      
      with(patientdata,{
          summary(age)
          })
      
    5. 因子factor()

      • 分拣数据
      • factor(data, levels, labels,...)
      # factors把字符型的名义变量 变为 用数字代表类别。常用于离散型数据。
      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); diabetes
      status<-factor(status, order=T, levels = c("Poor", "Improved","Excellent"));status          
      # order = T,有序性因子,按字母排序。用levels设定顺序。
      patientdata<-data.frame(patientID, age, diabetes, status)
      str(patientdata)                  # 查看dataframe
      summary(patientdata)
      
    6. 列表list

      • list是2个目的的静止合集,包罗的靶子叫做components/分量。
      • 语句list(变量1=分量1, 变量2=分量2,……)
      • 函数length()、 mode()、 names()能够分别再次回到列表的尺寸(分量的多少)、数据类型、列表里成分的名字。
      • 要素得以差异类型。迭代。双层中括号[[]]分选成分,第一维是称呼,第1维才是数值。
      # 创建列表
      #1. 使用list()
      > j <- list(name="Joe",salary=55000, union=T); j
      $name
      [1] "Joe"
      
      $salary
      [1] 55000
      
      $union
      [1] TRUE
      
      #2. 把向量转为列表形式
      z <- vector(mode="list")  
      z[["list"]] <- 3   
      
      # 列表索引
      > j$salary
      [1] 55000    
      
      j[["salary"]]           #注意单层中括号和双层中括号的区别
      j[[2]]
      j[1:2]
      
      # 增加列
      j$sex<-"M"              #增加一个叫做“sex”的列
      
      j[6:8]<-c(E,F,T);j      #增加三列,分别叫做E/F/T,位置在6到8.
      
      # 删除列
      j$sex<-NULL;j           #sex这列就不见了
      

    现实应用如下:

    #数组
    (a=array(1:60,c(3,4,5)))  #数组三维
    a[1,2,3]
    

    摘要:介绍奥德赛语言中常用的数据结构,向量、矩阵、列表、数据库、因子等。首若是它们的创建、索引和简单的运算。

    鉴于不一样的列能够涵盖差别情势(数值型、字符型等)的数额,数据框的定义较矩阵来讲更是相似。它与您平凡在SAS、SPSS和Stata中见到的数量集类似。数据框将是你在卡宴中最常管理的数据结构。

    #矩阵
    
    #创建矩阵:
    #方法一:使用matric(nrow=?,ncol=?)
    x<-matrix(nrow=2,ncol=3) #nrow 指定行, ncol指定列
    x
    x<-matrix(1:18,nrow = 3,ncol = 6) # 3行,6列,元素值由1:18填充,默认一列一列顺序填充
    x
    x<-matrix(1:18,nrow = 3, ncol = 6, byrow = T) # 3行,6列,元素值由1:18填充,指定行顺序填充
    x
    
    #方法二: dim(a) 通过dim 传递向量
    a<-1:18
    dim(a)<-c(3,6) #3行6列,行顺序填充
    x
    
    #方法三: rbind或cbind进行拼接
    x<-1:10
    y<-11:20
    z<-21:30
    
    m1 = rbind(x,y,z) #以行为单位进行拼接
    m2 = cbind(x,y,z) #以列为单位进行拼接
    m1
    m2
    
    #获取矩阵元素
    x<-matrix(1:18,nrow = 3,ncol = 6,byrow = T)
    x
    
    x[1,2] #第1行第2列
    x[1,] #第1行
    x[,2] #第2列
    x[,c(2,3,4)] #第2 3 4列
    x[c(1,2),] #第1 2行
    x[c(1,2),2:4] #第1 2行 第2 3 4列
    
    
    #行列命名
    colnames(x)<-c('C1','C2','C3','C4','C5','C6') #列的名字
    rownames(x)<-c('R1','R2','R3')  #行的名字
    
    x['R1','C1']
    x[c('R1','R2'),c('C1','C2')]
    
    
    #矩阵运算
    
    m1<-matrix(1:18,nrow = 3,ncol = 6, byrow = T)
    m2<-matrix(19:36,nrow = 3, ncol = 6, byrow = T)
    m1
    m2
    
    #矩阵加法
    m1 10   #矩阵 n
    m1 m2   #矩阵 矩阵
    
    #矩阵乘法
    m1*10  #矩阵*n
    m1*m2  #矩阵对应元素相乘
    m1 %*% t(m2)  #矩阵*矩阵 矩阵乘法 行列相乘
    
    #对角矩阵
    diag(4)  #4*4矩阵 对角元素都为1
    diag(c(1,2,3,6))  #4*4矩阵,对角元素为1,2,3,6
    
    x<-matrix(1:16,4,4)
    diag(x) #显示矩阵x的对角元素值
    
    
    #解方程组
    m<-diag(4)
    m
    b<-1:4
    solve(m,b) #m %*% x=b 求x
    

    帕杰罗具有大多用于存款和储蓄数据的目的类型,包含标量、向量、矩阵、数组、数据框和列表。

    #循环结构
    for (x in 1:5){
      print (x^2)
    }
    
    i=1
    while (i<6){
      print (i^2)
      i=i 1
    }
    
    i=1
    repeat {
      print (i^2)
      i=i 1
      if (i>5) break
    }
    

    workbook <- "c:/myworkbook.xlsx"

    while(condition){...}

    2.2.4 数据框

    x=c(1:2,'hello',T)
    x
    mode(x)      #查看数据类型
    class(x)     #查看数据结构
    
    is.vector(x)
    
    y<-matrix(1:20,c(4,5))
    mode(y)      #数据类型是numeric
    class(y)     #数据结构是matrix
    
    y<-as.data.frame(y) #数据类型转换matrix->dataframe
    y
    

    如上海体育场所: 创制了一个内容为数字一到拾的2×5矩阵。默许境况下,矩阵按列填充。然后,大家分别采取了第二行和第一列的成分。接着,又选拔了第2行第5列的要素。最终选用了放在第二行第6、第肆列的因素。

    3、向量
    向量表示一组数据,数据类型1致,向量能够代表行还是列
    皇家赌场,c() 如:
    : 如: 1:10
    seq(from(开头), to(到), by(步长), length.out(钦点向量的要素个数), along.with(长度与钦定的向量长度一样))

    > a[c(1, 3, 5)] #走访向量中率先、3、多少个成分

    对角矩阵
    对角成分为1 其他的为0 n*n方阵

    myarray <- array(cecior,dimensions,dimnames)。其中 vector( 下图中的“1:二四”) 包罗了数组中的数据, dimensions (下图中的“c(二,三,四)”)是一个数值型向量,给出了逐1维度下标的最大值,而 dimnames 是可选的、各维度名称标签的列表。

    CR-V是数量解析世界的言语
    精美灵活,通过扩大包来加强成效
    绘图功用
    代码轻便

    2.2.3 数组

     

    皇家赌场 1

    #数据框
    
    #创建数据框 
    a<-data.frame(fx = rnorm(10,10,2),
                  fy = runif(10,10,20),
                  fmonth = 1:10 ) 
    
    a[1,1]
    a[1,]
    a[,2]
    
    a$fx  #通过$fx取列信息
    a[[1]]#通过[[]]获取列信息
    
    
    
    search()  #查询
    
    attach(a)  #attach 数据到 search路径
    fx         #直接使用
    detach(a)  #detach 数据
    
    search()  #查询
    
    
    a<-with(a, fx)                #访问数据框成员
    
    
    #新增修改列
    a<-within(a,{fx=1:10          #通过within来进行修改,和新增列
                 fz=11:20})
    
    #新增列
    a$fz = 11:20
    a$fz = a$fx a$fy
    
    #列存在则修改
    a$fx = 1:10
    
    #查询数据集
    b = subset(a,fx>1&fmonth==8,select=c(fx,fmonth))  #select 列过滤,fx>1&fmonth==8 行过滤
    
    
    b=edit(a)  #修改后的数据集赋值给另一个数据集
    b
    fix(a)     #直接修改数据集内容
    a
    

    矩阵都以二维的,和向量类似,矩阵中也仅能包罗一种数据类型。

    #函数
    myadd=function(a,b,c){
      return (a b c)
    }
    
    
    
    mystat=function(x,na.omit=FALSE){
      if (na.omit){
        x=x[!is.na(x)]
      }
      m=mean(x)
      n=length(x)
      s=sd(x)
      skew=sum((x-m)^3/s^3)/n
      return (list(n=n,mean=m,stdev=s,skew=skew))
    }
    

    二.1 数据集的概念

    #向量
    (x1<- c(10,11,12,13))
    (x2<- 1:10)
    x3<- seq(1,5,1) #from 1 to 5 by 1
    x4<- seq(5,by=2,length.out=8) #向量中元素个数为8
    x5<- seq(2,by=3, along.with = x4) # along.with向量个数与x4一致
    x5[1:5]
    x5[c(1,2,3,4,5)]
    x5[-1:-5]   #不要下标为1-5的元素
    
    which(x5>5) #大于5的向量下标
    x5[which(x5>10)] #大于5的向量值
    

    矩阵是四个贰维数组,只是每种成分都怀有一样的格局(数值型、字符型或逻辑型)。可透过函数matrix() 成立矩阵。

    操作
    列表成分
    [[]]
    $

    2.2.6 列表

    ifelse函数

    002 实例标志符

    #向量化
    x=1:5
    
    (y=x^2)
    
    (y=matrix(1:16,4,4))
    (z=y^2)
    
    (x=1:5)
    (y=11:15)
    (x y)
    
    y>=13
    
    ifelse(x%%2==0,'A','B')
    
    x=data.frame(pv=rnorm(100,20,3),
                 uv=rnorm(100,40,4),
                 ip=runif(100,40,50))
    
    
    apply(x,MARGIN = 2,mean)               #在列的方向上进行mean运算
    apply(x,MARGIN = 2,quantile,probs=c(0.1,0.5,0.9)) #在列的方向上进行quantile运行
    

    list列表的重大。首先,列表允许以壹种轻巧的不二等秘书技协会和重新调用不相干的新闻。其次,多数LX570函数的运作结果都是以列表的款式再次来到。

    #因子
    f<-c('a','a','b','o','ab','ab')
    f<-factor(c('a','a','b','o','ab','ab')) #创建因子,level默认按字母排序
    
    unclass(f) #查看因子
    
    f<-factor(c('a','a','b','o','ab','ab'),levels = c('a','b','o','ab')) #指定因子对应的level
    
    unclass(f) #
    
    f1<- gl(4,3,labels = c('blue','red','green','yellow')) #4个级别,每个级别重复3次,labels的内容
    f1
    
    unclass(f1)
    

    [1] "j" "h" "a" "c" "m"

    创制列表
    list()

    在Tiguan中, PatientID 、 AdmDate 和 Age 为数值型变量,而 Diabetes 和 Status则为字符型变量。别的,你须要各自告诉Wrangler: PatientID 是实例标记符, AdmDate 含有日期数据,Diabetes 和 Status 分别是名义型和有序型变量。本田CR-V将实例标志符称为 rownames (行名),将类别型(包涵名义型和有序型)变量称为因子( factors )。

    检查数据类型 is.初叶
    is.character
    退换数据类型 as.发轫
    as.character

    皇家赌场 2

    一、数据类型
    character 字符
    numeric 数值型,实数或小数
    integer 整型
    complex 复数型
    logical 逻辑型 类似于boollean

    皇家赌场 3

     

    皇家赌场 4

    1三、向量化运算和apply家族

    貌似的话,列表便是部分对象(或成分,component)的静止聚集。能够使用函数 list() 创立列表:mylist <- list(object一, object2, ...)。当中的靶子足以是近日截止讲到的其余组织。

    #分支结构
    (Brand<-paste(c('Brand'),1:9,sep='')) #粘合一起
                                         #"Brand1" "Brand2" "Brand3" "Brand4" "Brand5" "Brand6" "Brand7" "Brand8" "Brand9"
    (PName<-paste(c('Dell'),1:9,sep=' '))
    (Mem<-rep(c('1G','2G','4G'),times=3)) #重复
                                          #"1G" "2G" "4G" "1G" "2G" "4G" "1G" "2G" "4G"
    (Feq=rep(c('2.2G','2.8G','3.3G'),each=3))
    (Price=rep(c(1000,2000,5000),3))
    PC=data.frame(Brand,PName,Mem,Feq,Price)
    ##分支结构
    #if..else
    PC
    PC$PD=rep('Cheap',9)
    
    for (i in 1:nrow(PC)){     #1:nrow(PC)从第1行到最后一行
      if (PC[i,'Price']>3000){ #取值进行比较
        PC[i,'PD']='Expensive' #修改值
      }
    }
    
    PC
    
    #ifelse函数
    PC$PD2=ifelse(PC$Price>3000,'Expensive','Cheap')  #向量化运算
    
    PC
    
    c
    

    2.3.8 导入 Stata 数据

    HummerH贰语言 19玖7年成为GNU项目 开源无需付费

    皇家赌场 5

    LAND官方网址 www.r-project.org

    001attach()、detach()、和with()的选取。attach()函数可将数据框加多到PAJERO的寻觅路线中,detach()函数将数据框从查找路线中移除。函数 attach() 和 detach() 最佳在您解析一个独自的数据框,并且不太只怕有八个同名对象时采纳。with()函数用法略。

    myfunc =function(par1,par2,...){
    ...
    }

    按行填充的2*2矩阵。

    11、循环结构
    for(n in x){...}

    关键内容

    #列表
    
    #创建列表
    a<-list(x=1:10,y=matrix(1:16,4,4),z=data.frame())
    
    names(a) <- c('c1','c2','c3') #修改成分名称
    
    c
    c=a['y']  #在列表中通过[]取出的对象类型还是列表
    c[2,1]    
    class(c)  #查看类型为list
    
    c=a[['y']] #在列表中通过[[]]取出的对象类型为实际对象类型矩阵
    c[2,1]
    class(c)  #查看类型为matrix
    
    a$y[2,1]  #获取矩阵的元素
    

    > a[2:6] #走访向量中第二至第伍个因素

    操作
    做客成分
    队列命名

     标注数据

    本文由68399皇家赌场发布于集群主机,转载请注明出处:RAV4 语言-基础

    关键词: 68399皇家赌场 R

上一篇:演习代码day1

下一篇:没有了