学习小组Day4

作者: 王小豆 | 来源:发表于2021-05-16 17:44 被阅读0次

    1.安装加载包

    ptions("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))#不设置镜像会在原镜像里下载包
    options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")#生信的包用中科院的镜像下载 
    install.packages("dplyr")
    library(dplyr)
    available.packages()#可以查看在当前获得的包
    

    2.dplyr包

    dplyr包介绍内容.png
    • 常用函数
    mutate(test, new = Sepal.Length * Sepal.Width)#mutate()增加新列,可以一次性添加多个列
    select(test,1)#按照列号列名筛选
    select(test,c(1,5))
    select(test,1,5)
    select(test,Sepal.Length)
    select(test,Sepal.Length,Species)
    filter(test, Species == "setosa")#对符合条件(Species列的值等于setosa)的行进行筛选
    filter(test, Species == "setosa"&Sepal.Length > 5 )
    filter(test, Species =="setosa",Sepal.Length>5)#这里,相当于且
    filter(test, Species %in% c("setosa","versicolor"))
    #mutate(),select(),filter(),arrange(),group_by都可以输入多个对象
    arrange(test, Sepal.Length)#默认从小到大排序,按照Sepal.Length排序
    arrange(test, desc(Sepal.Length))#用desc从大到小
    arrange(test,Sepal.Length,Sepal.Width)#先按照S.L排序,在按S.W排序
    summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 计算Sepal.Length的平均值和标准差
    group_by(test, Species)#可对数据框的分类变量进行分组
    summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
    
    • 实用技能
    test %>% 
      group_by(Species) %>% 
      summarise(mean(Sepal.Length), sd(Sepal.Length))#与上面group_by()+summarise()组合代码是一样的结果,只不过是不用规定数据集了
    count(test,Species)#按照Species的分类分别对不同分类进行计数
    
    • join家族
    test1 <- data.frame(x = c('b','e','f','x'), 
                        z = c("A","B","C",'D'),
                        stringsAsFactors = F)
    test1
    test2 <- data.frame(x = c('a','b','c','d','e','f'), 
                        y = c(1,2,3,4,5,6),
                        stringsAsFactors = F)
    test2
    inner_join(test1, test2, by = "x")#返回test1和test2中都有的x的合并
    left_join(test1, test2, by = 'x')#返回text1的所有值且把对应的test2中的值添加进去
    left_join(test2, test1, by = 'x')#返回text2的所有值且把对应的test1中的值添加进去
    full_join( test1, test2, by = 'x')#返回所有不重复的值
    semi_join(x = test1, y = test2, by = 'x')#如果第一个数据中的值在第二个数据中出现,则仅返回第一个数据中的值
    anti_join(x = test2, y = test1, by = 'x')#只有第一个数据在第二个数据中不存在,才会把第二个数据的x中的元素返回来
    test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40))
    test1
    test2 <- data.frame(x = c(5,6), y = c(50,60))
    test2
    test3 <- data.frame(z = c(100,200,300,400))
    test3
    
    • 行列合并
    bind_rows(test1, test2)
    rbind(test1,test2)#列数相同
    bind_cols(test1, test3)
    cbind(test1,test3)#行数相同
    

    相关文章

      网友评论

        本文标题:学习小组Day4

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