Day6

作者: French_fries_ | 来源:发表于2020-03-22 15:50 被阅读0次

    R包

    1 安装

    1.1 镜像设置

    tools/global options/package

    1.2 安装命令

    install.packages('包')
    biocManager::install('包')
    #取决于你要安装的包存在于CRAN网站还是Biocductor
    library(包)
    require(包)
    #打开包
    

    2 dplyr五个基础函数

    test <- iris[c(1:2,51:52,101:102),]
    #取出iris数据中第1,2,51,52,101,102行的数据
    

    2.1 mutate 添加列

    mutate(test, new = Sepal.Length * Sepal.Width)
    #新建列,数据从test中取,列名为new,数据为列Sepal.Length 和Sepal.Width相乘的结果
    

    注意,这里添加的列的不存在于test中的,如果需要改变的话需要赋值给test(test<-)

    2.2 select 筛选列

    按列号筛选
    select(test,c(1,5))
    取出第一和第五列
    按列名筛选
    select(test, Petal.Length, Petal.Width)
    取出名叫Petal.Length, Petal.Width的两列

    2.3 filter 筛选行

    filter(test, Species == "setosa")
    #筛选test变量中Species这一列中是setosa的行
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    ## 1          5.1         3.5                  1.4                  0.2        setosa
    ## 2          4.9         3.0                  1.4                  0.2        setosa
    filter(test, Species == "setosa"&Sepal.Length > 5 )
    #筛选test变量Species这一列中是setosa并且Sepal.Length>5的行
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    ## 1          5.1         3.5                   1.4                  0.2        setosa
    filter(test, Species %in% c("setosa","versicolor"))
    #筛选物种存在于向量c("setosa","versicolor")中的行
    
    

    2.4 arrange 按某1列或某几列对整个表格进行排序

    arrange(test, Sepal.Length)#默认从小到大排序
    arrange(test, desc(Sepal.Length))#desc:降序排列
    
    

    2.5 summarise 汇总

    group_by(test,species) 
    #对于test变量中的species列进行分组,相同的放在一起
    summarise(test,mean(Sepal.Length),sd(Sepal.Width))
    #分别计算test变量中Sepal.Length和Sepal.Width列的平均值和方差
    summarise(group_by(test,Species),mean(Sepal.Length),sd(Sepal.Width))
    #分别计算test变量不同物种中Sepal.Length和Sepal.Width列的平均值和方差、
    

    3 dplyr的实用技能

    3.1 管道操作

    %>% 用ctrl+shift+M可以打出来

    test %>%
      group_by(Species) %>% 
      summarise(mean(Sepal.Length),sd(Sepal.Length))
    #这段的功能和summarise(group_by(test,Species),mean(Sepal.Length),sd(Sepal.Width))是一样的,意思是可以直接把数据传递给下一个函数调用或表达式
    

    3.2 count统计某列的unique值

    count(test,Species) #统计Species中的种类以及数量

    4 dplyr处理关系数据

    新建数据框

    test1 <- data.frame(x=c('1','2','3','4'),
                        y=c('a','b','c','d'),
                        stringsAsFactors=T)
    #stringsAsFactors: 逻辑:字符向量是否应该转换为因子?默认值是TRUE,但是可以通过设置选项(stringsAsFactors=FALSE)来改变这一点。
    

    1.內连inner_join,取交集
    inner_join(test1, test2, by = "x")
    2.左连left_join(从test1里取x列的值,并把对应的y表的数据加上)
    left_join(test1, test2, by = 'x')
    3.全连full_join
    full_join( test1, test2, by = 'x')
    4.半连接:返回能够与y表匹配的x表所有记录semi_join
    semi_join(x = test1, y = test2, by = 'x')
    5.反连接:返回无法与y表匹配的x表的所记录anti_join
    anti_join(x = test2, y = test1, by = 'x')
    6.简单合并
    bind_rows(test1, test2) #把test1和test2中的行合并,需要两个表格列数相同
    bind_cols(test1, test3) #把test1和test2中的列合并,需要有相同的行数
    相当于base包里的cbind()函数和rbind()函数

    相关文章

      网友评论

        本文标题:Day6

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