美文网首页
1-5-1/2/3向量精讲1-7-1数据框结构介绍

1-5-1/2/3向量精讲1-7-1数据框结构介绍

作者: 小胡同学ime | 来源:发表于2021-10-12 08:38 被阅读0次
    对单个向量进行的操作
    1. 赋值给一个变量名 用 <- 或者=
    x <- c(1,5,4,8)    ### 赋值符号  Alt + -
    
    

    赋值和输出一起执行

    (x <- c(1,3,5))
    x <- c(1,3,5); x
    
    > x <- c(1,3,5,1);x
    [1] 1 3 5 1
    > (x <- c(1,3,5,1))
    [1] 1 3 5 1
    

    向量首尾相连

    > x=1:5
    > y=2:6
    > c(x,y)
     [1] 1 2 3 4 5 2 3 4 5 6
    
    1. 简单数学计算
    x=c(1,3,5) 
    > x + 1    # [1] 2 4 6
    
    
    1. 根据某条件进行判断,生成逻辑值向量
    x > 3  # [1] FALSE FALSE  TRUE
    
    
    1. 初级统计
    var(x)  # 方差
    sd(x) # 标准差
    sum(x) # 总和
    length(x) # 长度(向量元素个数)
    unique(x) # 去重复,重复值只保留第一次出现,小于x长度的向量
    duplicated(x) # 判断元素是否在前面出现过, 与X长度相等的逻辑值向量
    table(x) # 重复值统计,共有哪几种元素,并分别出现多少次
    sort(x) #从小到大排序
    
    
    对两个向量的操作
    x = c(1,3,5,1)
    y = c(3,2,5,6)
    
    
    1. 逻辑比较,生成等长的逻辑向量
    x == y  #元素比较位置一一对应
    # [1] FALSE FALSE  TRUE FALSE
    
    
    x %in% y   # x的元素是否在y中,元素与y全部元素比较
    # [1] FALSE  TRUE  TRUE FALSE
    
    
    1. 数学计算
    x+y
    
    
    1. 连接 生成一个字符串型数据
    paste(x ,y, sep = ":")##中间连接符号默认为空格
    # [1] "1:3" "3:2" "5:5" "1:6"
    paste0(x,y)#中间连接符号默认没有
    
    x == y 与 x %in% y 的区别
    image
    1. 交集、并集、差集
    intersect(x,y)   # 取交集去重,x、y里面都有的元素
    union(x,y) # 取并集去重,x、y里面的元素(去重复)
    setdiff(x,y) # 取差集,在x里面有,在y里面没有
    setdiff(y, x) # 取差集,在y里面有,在x里面没有
    
    x = c(1,3,5,1)
    y = c(3,2,5,6)
    > 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
    
    
    当两个向量长度不一致

    理解一下循环补齐
    短的补齐,谁长谁说了算

    image
    利用循环补齐简化代码
    paste0(rep("gene",3), 1:3)
    paste0("gene", 1:3)
    
    
    向量取子集

    []:将TRUE对应的值挑选出来,FALSE舍弃

    image
    > x <- 8:12
    > #根据逻辑值取子集(自动取T)
    > x[x==10]
    [1] 10
    > x[x<12]
    [1]  8  9 10 11
    > x[x %in% c(9,13)]
    [1] 9
    > #根据位置取子集
    > x[4]
    [1] 11
    > x[2:4]
    [1]  9 10 11
    > x[c(1,5)]#多个不连续
    [1]  8 12
    > x[-4]#去除第四个元素
    [1]  8  9 10 12
    > x[-(2:4)]#去除第二到第四个元素
    [1]  8 12
    x[-(length(x)-1)]# 去掉向量倒数第2个向量
    

    [] 括号内的内容:

    1. 可以是一个与 x 等长的逻辑向量

    2. 能单独运行成功

      image
    修改向量的元素

    将符合某种逻辑条件的元素进行修改

    > x[4] <- 40
    > x
    [1]  8  9 10 40 12
    > x[x>10] <- 10
    > x
    [1]  8  9 10 10 10
    
    
    简单向量作图
    k1 <- rnorm(12)
    k2 <- rep(c("a","b","c","d"), each = 3)
    plot(k1)#未指定横坐标,自动按元素位置为横坐标,k1为纵坐标
    boxplot(k1~k2)#指定k1为纵坐标,k2为横坐标
    
    
    向量匹配排序 - match
    match(x,y)         #x中对应y集元素坐标
    y[match(x,y)]     #根据x,调整y的顺序
    

    调整谁的顺序就把谁写在后面

    image

    数据结构

    1. Vector 向量:一维
      只有长度,常见生成向量的函数
    >c(1,2,3,4,5,6)
    >sample(1:100,7)    #从1-100里面随机生成7个数字
    
    1. matrix 矩阵:二维(拥有行列)
      所有的列数据类型相同,两个维度
      函数生成矩阵
    matrix(x, nrow = 7)  #把X排成矩阵,按照行/列标准排开(一个标准就行)
    
    image.png

    多个向量合成矩阵,要求向量长度相等,数据类型一致

    x1 <- c(1,2,3)
    x2 <- c(2,3,4)
    x3 <- c(3,4,5)
    cbind(x1, x2, x3)
    
    
    1. data.frame 数据框
      多个长度相同、数据类型可以不同的向量按列组合
    >y1=sample(1:100,7);y1
    [1]36 64 58 56 24 21 89 
    >y2=letters[1:7]
    [1]"a" "b" "c" "d" "e" "f" "g"
    >y3=sample(1:10,7)
    [1]1 5 9 2 4 8 3
    >data.frame(y1,y2,y3)
    
    1. list 列表
      长度可以不同、数据类型可以不同
      没有行和列的概念,可以有多级元素

    数据框

    数据框来源

    1. 在R中新建
    2. 由已知数据转换或处理得到
    3. 从文件中读取
    4. 内置数据集
    df <- data.frame(gene =  c("gene1","gene2","gene3"), # gene 是 列名, = 之后是列的内容(向量),内容用逗号分隔
                     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))
    
    image.png

    读取文件得到数据框

    df2 <- read.csv("gene.csv")#读取文件已经在工作目录下
    
    
    数据框属性描述
    dim(df)    #得到数据框的行数及列数
    nrow(df)/ncol(df)#行数目/列数目
    rownames(df)#行名
    colnames(df)#列名
    
    数据框取子集(向量取子集-位置,数据框取子集-坐标)
    单个元素df [2,2]
    单行  df [2,]    多行df [1:5,]    df [c(1,5,9),]
    单列  df [,2]
    行列双选 df [c(1,3),1:3]
    根据行名or列名取子集
    df [,"exp"]    df [,c("exp","gene","speidhf")]    如果数据太多,避免出错
    >nn=c("exp","gene","speidhf") 
    >df [,nn]  
    df [,ncol(df)]  取df最后一列
    

    提取列的常用操作

    df$+tab(弹出所有列名)→生成标准向量
    
    image.png

    数据框的修改

    *改数据
    改一个格   df [2,2]
    改一整列   df $ 列名<-c(1,2,5)
    取子集 $/ [ ] +赋值操作
    
    *修改行名
    改全部行名  rownames(df)<-c("d1","d2","d3","d4")
    改一个行名  rownames(df)[2]<-"a2"    #改第二行名字为“a2”
    

    相关文章

      网友评论

          本文标题:1-5-1/2/3向量精讲1-7-1数据框结构介绍

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