美文网首页生信星球培训第108期
生信星球学习小组Day4

生信星球学习小组Day4

作者: 生信小白 | 来源:发表于2021-05-17 22:50 被阅读0次

    第一步_安装和加载R包

    01_设置镜像

    # options函数就是设置R运行过程中的一些选项设置
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #对应清华源
    options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #对应中科大源
    

    02_安装R包

    安装R包使用的函数取决于下载的地址

    install.packages() # CRAN网站
    BiocManager::install() # Bioconductor
    

    03_加载R包

    library()
    require()
    

    第二步_dplyr包的五个基础函数

    test <- iris[c(1:2,51:52,101:102),]
    # mutate()新增列
    mutate(test, new = Sepal.Length * Sepal.Width) #  新增new列
    
    # select()按列筛选
    select(test,1) # 选取第一列
    select(test,c(1,5)) # 选取1和5列
    select(test, Sepal.Length) # 选取Sepal.Length列
    
    select(test, Petal.Length, Petal.Width) # 选取Petal.Length, Petal.Width两列
    
    vars <- c("Petal.Length", "Petal.Width") # 选取vars变量中的任意一列
    select(test, one_of(vars)) # 
    
    # filter()按行筛选
    filter(test, Species == "setosa") # 选取setosa的行
    filter(test, Species == "setosa"&Sepal.Length > 5 ) # 选取setosa且Sepal.Length > 5的行
    filter(test, Species %in% c("setosa","versicolor")) # 选取向量中包含元素的列
    
    # arrange()排序
    arrange(test, Sepal.Length) # 按照Sepal.Length列排序,默认从小到大
    arrange(test, desc(Sepal.Length)) # 用desc()排序顺序,从大到小
    
    # summarise()对数据进行汇总
    summarise(test,
              mean(Sepal.Length), # 计算Sepal.Length的平均值
              sd(Sepal.Length)) # 计算Sepal.Length的标准差
    
    group_by(test, Species) # 先按照Species分三组setosa;versicolor;virginica 
    summarise(group_by(test,Species),mean(Sepal.Length),sd(Sepal.Length)) # 计算每组Sepal.Length的平均值和标准差
    

    dplyr两个实用技能

    ## 管道操作:%>% ,加载任意一个tidyverse包即可使用
    test  %>%  group_by(Species)  %>%  summarise(mean(Sepal.Length), sd(Sepal.Length))
    
    ## count统计某列的unique值
    count(test,Species)
    

    dplyr处理数据关系

    将两个表进行连接,注意不要引入因子变量

    # 合并两组向量形成数据框
    test1 <- data.frame(x = c('b','e','f','x'), 
                        z = c("A","B","C",'D'),
                        stringsAsFactors = F)
    
    test2 <- data.frame(x = c('a','b','c','d','e','f'), 
                        y = c(1,2,3,4,5,6),
                        stringsAsFactors = F)
    
    # 內连inner_join,取交集
    inner_join(test1, test2, by = "x") # test1和test2两个数据框根据x列共同元素取交集合并
    
    # 左连left_jion
    left_join(test1, test2, by = 'x') # 以test1为标准,匹配不到test2的x列,即缺失值
    left_join(test2, test1, by = 'x') # 以test2为标准,匹配不到test1的x列,即缺失值
    
    # 全连full_jion
    full_join( test1, test2, by = 'x') # test1和test2数据框中x列元素全部合并保留
    
    # 半连接:返回test1数据框中能够与test2匹配的x列的元素
    semi_join( test1, test2, by = 'x')
    
    # 反连接:返回test1数据框中无法与test2匹配的x列的元素
    anti_join(x = test1, y = test2, by = 'x')
    
    # 简单合并,相当于cbind()和rbind()函数
    # 注意:bind_rows()需要两个数据框有相同的列;bind_cols需要两组数据框具有相同的行
    test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40)) # 4*2
    test1
    test2 <- data.frame(x = c(5,6), y = c(50,60)) # 2*2
    test2
    test3 <- data.frame(z = c(100,200,300,400)) # 4*1
    test3
    bind_rows(test1,test2) # 6*2
    bind_cols(test1,test3) # 4*3
    
    

    相关文章

      网友评论

        本文标题:生信星球学习小组Day4

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