R语言数据操作

作者: nnlrl | 来源:发表于2019-07-10 12:56 被阅读2次

    列合并

    cbind(a,b)
    #根据列进行合并,即叠加所有列,a列的矩阵与b列的矩阵cbind()最后变成a+b列,合并前提:cbind(a, b)中矩阵a、b的行数必需相符
    merge(a,b,by='colname')
    #以某一列为基准对a,b进行合并
    

    行合并

    rbind(a,b)
    #根据行进行合并,就是行的叠加,a行的矩阵与b行的矩阵rbind()最后变成a+b行,合并前提:rbind(a, b)中矩阵a、b的列数必需相符
    

    数据排序

    match(x, table, nomatch = NA_integer_, incomparables = NULL);
    #匹配两个向量,返回向量x中的元素在table中出现的位置;
    

    两数据的交集,并集,补集

    交集

    # 两个数值向量取交集
    intersect(x=1:4, y = 2:6)
    # [1] 2 3 4
    
    # 两个字符向量取交集
    intersect(x=letters[1:4], y = letters[2:6])
    # [1] "b" "c" "d"
    
    # 混合向量
    intersect(x=c("a", "b", "c", 4), y = c("a", 2, 3, 4))
    [1] "a" "4"
    

    并集

    # 两个数值向量取并集
    union(x=1:4, y = 2:6)
    # [1] 1 2 3 4 5 6
    
    # 两个字符向量取并集
    union(x=letters[1:4], y = letters[2:6])
    # [1] "a" "b" "c" "d" "e" "f"
    
    # 混合向量
    union(x=c("a", "b", "c", 4), y = c("a", 2, 3, 4))
    [1] "a" "b" "c" "4" "2" "3"
    

    判断不同

    x = 1:4
    y = 2:6
    # 找x中不同于y的元素
    setdiff(x, y)
    # [1] 1
    # 找y中不同于x的元素
    setdiff(y, x)
    # [1] 5 6
    

    判断是否相同

    identical(a,b)
    #返回逻辑型向量,相同返回True,不相同返回False
    stopifnot(identical(a,b))
    #不相同时会有红字
    

    行名重复解决办法

    处理一些转录组数据时,经常会发现有的基因名是相同的,并不可以作为行名,这时就需要对重复的基因名进行操作

    data=avereps(data)
    #对行取平均值,属于edgeR包
    uniquifyFeatureNames(
      ID=paste0("ENSG0000000", 1:5),
      names=c("A", NA, "B", "C", "A")
    )
    #属于scater包,对重复的基因名采取前后叠加的方式获得不同的基因名,保证最大程度的数据保留
    

    数据类型转换

    dimnames=list(rownames(rt),colnames(rt))
    data=matrix(as.numeric(as.matrix(rt)),nrow=nrow(rt),dimnames=dimnames)
    #或者使用apply函数
    apply(rt,1,as.numeric)
    

    字符串操作

    library(stringr)
    rownames(exprSet) = str_split(rownames(exprSet),'[.]',simplify = T)[,1]
    #常见的去除Ensembl基因名的版本号
    group_list=ifelse(as.numeric(substr(colnames(exp),14,15)) < 10,'tumor','normal')
    #常见的TCGA按照01和11划分癌症组织和癌旁组织
    

    正则表达式的应用
    \b 单词的开始或者结尾
    . 匹配除了换行符之外的任意一个字符
    \d 匹配一个数字,与[0-9]同理
    \s 匹配任意的空白字符,包括空格,制表符,换行符
    \w匹配一个字母,包括字符,下划线,汉字等
    ^ 匹配字符串的开头
    $ 匹配字符串的结尾
    ? 指定内容重复0次或者1次
    + 指定内容重复1次至多次
    * 指定内容重复0次至多次
    {}指定前面内容重复的次数
    []匹配其中的任意一个字符(0-9,a-c)
    ()给字符分组,用\1,\2匹配

    相关文章

      网友评论

        本文标题:R语言数据操作

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