美文网首页R学习笔记分享
Part2:数据类型和向量

Part2:数据类型和向量

作者: 不到7不改名 | 来源:发表于2021-02-01 10:53 被阅读0次

    Part2:数据类型和向量

    1.数据类型

    • 三种类型

      • 数值型:1 ,2
    • 字符型:’a' 'm'

      • 逻辑型

        • TRUE: T

        • FALSE:F

        • NA

    • 判断数据类型函数:class()

      • 逻辑运算 多个逻辑条件的连接与&、或|、非!
    • 判断函数

      • is.numeric()
      • is.logical()
      • is.charactor()
    • 转换

      • as.numeric()
      • as.logical()
      • as.charactor()

    2.数据结构

    • 向量
      • 向量则是数据框单独拿出的一列,视为一个整体
      • 一个向量只能有一种数据类型,可以有重复值
    • 数据框
      • ​ 数据框约等于表格
    • 矩阵
    • 列表

    3.向量

    • 2.1向量的生成

      • 用c()逐一放到一起
      • 连续的数字用冒号”:”
      • 有重复的用rep(),有规律的序列用seq(),随机数用rnorm
        • rep("gene",times=3)
        • seq(from=3,to=21,by=3)
        • rnorm(n=3)
      • paste0() image-20201118161221541.png
    • tips:数据类型转换的优先顺序

      • 数值型和逻辑型优先转换为字符型
      • 逻辑型优先转换为数值型
    • 2.2对一个向量进行的操作

      • 1.赋值

        • x = c(1,3,5,6,2) #随意的写法
        • x <- c(1,3,5) #规范的赋值符号
        • 赋值+输出一起执行:
          • (x <- c(1,3,5))
          • x <- c(1,3,5);x
      • 2.简单数学计算

        > x+1 [1] 2 4 6 2
        > log(x) [1] 0.000000 1.098612 1.609438 0.000000
        > sqrt(x) [1] 1.000000 1.732051 2.236068 1.000000
        
    • 3.根据某条件进行判断,生成等长的逻辑向量

      > x>3 [1] FALSE FALSE TRUE FALSE
      > x==3 [1] FALSE TRUE FALSE FALSE
      
    • 4.初级统计

      max(x) #最大值
      min(x) #最小值
      mean(x) #均值
      median(x) #中位数
      var(x) #方差
      sd(x) #标准差
      sum(x) #总和
      
      >length(x) #长度
      [1] 4
      > unique(x) #去重复
      [1] 1 3 5
      > duplicated(x)
      [1] FALSE FALSE FALSE TRUE
      > table(x) #重复值统计
      x
      1 3 5
      2 1 1
      > sort(x)
      [1] 1 1 3 5
      
    • 2.3对两个向量进行的操作

      • 1.逻辑比较,生成等长的逻辑向量

        x = c(1,3,5,1)
        y = c(3,2,5,6)
        
        x == y
        [1] FALSE FALSE TRUE FALSE
        
        x %in% y #x的元素是否在y中
        [1] FALSE TRUE TRUE FALSE
        
    • 2.数学计算

      x + y                                     
      
    • 3.“连接”

      paste(x,y,sep=":")
      [1] "1:3" "3:2" "5:5" "1:6"
      
    • 4.交集、并集、差集

      intersect(x,y)
      [1] 3 5
      union(x,y)
      [1] 1 3 5 2 6
      setdiff(x,y)
      [1] 1
      setdiff(y,x)
      [1] 2 6
      
    • 5.当两个向量长度不一致:循环补齐

    image-20201118165909004.png

    * 利用循环补齐简化代码

    image-20201118170155239.png

    4.向量筛选

    • (取子集) [ ]:将TRUE对应的值挑选出来,FALSE丢弃

    • 根据逻辑值:中括号里是与x等长的逻辑值向量

    image-20201118170518680.png
    • 根据位置:中括号里是由x的下标组成的向量
    image-20201118170645934.png

    5.修改向量中的元素

    • 修改某个元素

      x =8:12;x 
      [1]8 9 10 11 12
      
      x[4] <- 40
      取子集+赋值
      
    • 修改某些元素

      x =8:12;x
      [1]8 9 10 11 12
      
      改符合某个逻辑条件的多个元素
      x[x>10] <- 10
      

    6.简单向量作图

    > k1 = rnorm(12)
    > k2 = rep(c("a","b","c","d"),each = 3)
    > plot(k1)
    > boxplot(k1~k2)
    

    7.向量匹配排序

    match:谁在外面,谁就在后面

    y[match(x,y)]
    

    8.矩阵(matrix)

    所有列的数据类型相同,两个维度(行数和列数)

    image-20201120153606662.png
    • 矩阵新建和取子集

      m <- matrix(1:9, nrow = 3)
      
      m[2, ]
      m[, 1]
      m[2, 3]
      m[2:3,1:2]
      
    • 矩阵的转置和转换

      t(m)      #将行变成列,列变成行
      
       as.data.frame(m)         #将矩阵转换为数据框
      
    • 矩阵画热图

       pheatmap::pheatmap(m)
        pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)     #默认的设置不符合你心意,那就自定义
      

    9.数据框(data.frame)

    多个长度相同、数据类型可以不同的向量按列组合

    image-20201120153736664.png

    1.数据框来源

    (1)在R中新建

    (2)由已有数据转换或处理得到

    (3)从文件中读取

    (4)内置数据集

    2.新建数据框

    • 本质上是向量按列组合

      df <- data.frame(gene =c("gene1","gene2","gene3"),
                    sam = c("sample1","sample2","sample3"),
                    exp = c(32,34,45))
      df <- data.frame(gene = paste0("gene",1:3),
                    sam = paste0("sample",1:3),
                    exp = c(32,34,45))
      
    • 读取数据框

    df2 <- read.csv("gene.csv")
    

    3.数据框属性描述

    • 维度(有几行几列)

      dim(df)
      nrow(df) /ncol(df)
      
    • 行名/列名

    rownames(df)/colnames(df)
    

    4.数据框取子集(一个、一行、一列)

    4.1
    • df[2,2]  #数据框[行,列]
      
    • df [2,]   #取第二行
      df [,2]   #取第二列
      
    • df[c(1,3),1:2]    #对行和列进行选择
      
    4.2根据行名或列名
    df[,“exp”]
    df[,c(“gene”,“exp”)]
    

    进阶—理解以下代码

    df[,ncol(df)]      #选取最后一列
    df[,-ncol(df)]     #删除最后一列
    
    4.3提取列的常用操作
     df$exp
     
     能对向量进行的计算和统计,都能对df$exp做
    
    • max(df$exp) 最大值
    • min(df$exp) 最小值
    • range(df$exp) 数值的范围
    • mean(df$exp) 均值
    • median(df$exp) 中位数
    • var(df$exp) 方差
    • sd(df$exp) 标准差
    • length(df$exp) 长度
    • sum(df$exp) 总和
    

    5.数据框编辑

    • 取子集$或[] +赋值操作
    df[3,3]<- 5
    df$abc <-c(23,15,37)
    
    df$abc <-c(23,15,37)        #新增一列,如果原数据框没有这个列名
    
    • 误操作该怎么办?

      • 对df多次赋值,以最后一次为准
      • 运行了错误的代码,不能撤销,但可以覆盖或重来
    • 修改行名和列名

      rownames(df) <- c("r1","r2","r3")    #改全部行名
      rownames(df)[2] <-"x"                #改一个行名
      

    6.数据框进阶

    • 行数较多的数据框可截取前/后几行查看

      head(data.frame)      #查看数据框全部的行
      head(data.frame,3)    #查看数据框的前3行
      
    • 行列数都多的数据框可取前几行前几列查看

      iris[1:3,1:3]     #数据框[]
      
    • 查看每一列的数据类型和具体内容

      str(df)
      
    • 去除含有缺失值的行:

      na.omit(df)   #仅按照某一列来去除缺失值、缺失值替换:tidyr包
      
    • 两个表格的连接

      cbind     #按列连接,行数相同
      rbind     #按行连接,列数相同
      
      merge(test1,test2,by="name")      #共同列的列名
      merge(test1,test3,by.x = "name",by.y = "NAME")
      
    • 6)如果列名顺序错乱,如何按照指定顺序重排?

    https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA

    10.列表(list)

    长度可以不同、数据类型可以不同 向量 数据框 矩阵或数据框 列表 没有行和列的概念,可以有多级元素

    image-20201120153917317.png
    • 列表新建和取子集

      l <- list(m = matrix(1:9, nrow = 3),
            df = data.frame(gene = paste0("gene",1:3), sam = paste0("sample",1:3), exp = c(32,34,45)),
            x = c(1,3,5))
            
      [[2]] l$df        #取子集
      

    11.删除变量

     rm(l)          #删除一个
     rm(df,m)       #删除多个
     rm(list = ls())        #删除全部
     ctrl+l         #清空控制台
    

    12.元素的“名字”-names()

    元素可命名,用函数names(),可根据名字提取子集,向量、数据框、列表通用。

    image-20201121162646036.png

    相关文章

      网友评论

        本文标题:Part2:数据类型和向量

        本文链接:https://www.haomeiwen.com/subject/qxtdnktx.html