zoukankan      html  css  js  c++  java
  • R(五): R常用函数

        工作笔记记录,会持续更新....

    目录:

    • apply
    • tapply
    • lapply
    • sapply
    • merge
    • substr、substring、strsplit、unlist、paste、paste0、nchar
    • table

    apply函数:


    • apply:apply的中文意思是应用,这个函数的意思是通过将一个函数应用到矩阵或数组中,返回一个向量或数组
    • 语法:apply(X, MARGIN, FUN, ...)  , 其中X为一个数组;MARGIN为一个向量(表示要将函数FUN应用到X的行还是列),1:表示取行,2:表示取列,c(1,2)表示行、列都计算。
    • 示例:
      > ma <- matrix(c(1:4, 1, 6:8), nrow = 2);ma
           [,1] [,2] [,3] [,4]
      [1,]    1    3    1    7
      [2,]    2    4    6    8
      
      > apply(ma, 1, sum)
      [1] 12 20
      > apply(ma, 2, sum)
      [1]  3  7  7 15
      View Code

    tapply:


    • tapply:是对向量中的数据进行分组处理,而非对整体数据进行处理
    • 语法: tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE),
      1. 其中X通常是一向量;
      2. INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;
      3. FUN是需要计算的函数;
      4. simplify是逻辑变量,TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。需要注意的是,当第二个参数INDEX不是因子时,函数 tapply() 同样有效,因为必要时 R 会用 as.factor()把参数强制转换成因子
    • 示例:
      > da
         year province sale
      1  2007        A    1
      2  2007        B    2
      3  2007        C    3
      4  2007        D    4
      5  2008        A    5
      6  2008        C    6
      7  2008        D    7
      8  2009        B    8
      9  2009        C    9
      10 2009        D   10
      > attach(da)
      > tapply(sale,list(year,province),mean)
               A  B C  D
      2007  1  2 3  4
      2008  5 NA 6  7
      2009 NA  8 9 10
      View Code

    lapply:


    • lapply: (list apply)针对list的apply函数
    • 语法: lapply(X, FUN, ...)   lapply的返回值是和一个和X有相同的长度的list对象,这个list对象中的每个元素是将函数FUN应用到X的每一个元素
    • 示例:
      #外卖示例数据
      s<-data.frame(shop_id=c('001','002'),saled=c(35,78),
                    takeout_cost=c(30,60),delivery_time=c(10,20))
      
      lapply(s,function(x){
        if(is.numeric(x)){
          mean(x)
        }
        else{
          length(x)
        }
      })
      View Code
    • 结果:$shop_id [1] 2 $saled [1] 56.5 $takeout_cost [1] 45 $delivery_time [1] 15

    sapply:


    • sapply:sapply函数和Lapply函数类似,也是对List进行处理,只是在返回结果上,sapply会根据结果的数据类型和结构,重新构建一个合理的数据类型返回
    • 语法:sapply(X, FUN,..., simplify = TRUE, USE.NAMES = TRUE)
    • 示例:如上例,调用sapply函数返回结果为:
      shop_id      saled  takeout_cost delivery_time 
      2.0          56.5          45.0          15.0

    merge:


    • merge: merge是R语言中用来合并数据框的函数
    • 语法:merge(x, y, by = intersect(names(x), names(y)),  by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,  sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)
      1. x,y:用于合并的两个数据框
      2. by.x,by.y:指定依据哪些行合并数据框,默认值为相同列名的列.
      3. all.x,all.y:指定x和y的行是否应该全在输出文件
      4. sort:by指定的列是否要排序
      5. suffixes:指定除by外相同列名的后缀
      6. incomparables:指定by中哪些单元不进行合并
    • 示例代码:
      #数据:
      w1:
      NAME    SCHOOL    CLASS    ENGLISH
      A    S1    10    85
      B    S2    5    50
      A    S1    4    90
      A    S1    11    90
      C    S1    1    12
      
      w2:
      NAME    SCHOOL    CLASS    MATHS    ENGLISH
      A    S3    5    80    88
      B    S2    5    89    81
      C    S1    1    55    32
      
      merge(w1, w2, all = T)
      
        NAME SCHOOL CLASS ENGLISH MATHS
      1    A     S1     4      90    NA
      2    A     S1    10      85    NA
      3    A     S1    11      90    NA
      4    A     S3     5      88    80
      5    B     S2     5      50    NA
      6    B     S2     5      81    89
      7    C     S1     1      12    NA
      8    C     S1     1      32    55
      
      merge(w1, w2, by = c("NAME", "SCHOOL", "CLASS"), all = T)
      
        NAME SCHOOL CLASS ENGLISH.x MATHS ENGLISH.y
      1    A     S1     4        90    NA        NA
      2    A     S1    10        85    NA        NA
      3    A     S1    11        90    NA        NA
      4    A     S3     5        NA    80        88
      5    B     S2     5        50    89        81
      6    C     S1     1        12    55        32
      View Code

    substr、substring、strsplit、unlist、paste、paste0、nchar:


    • substr、substring: 取子字符串
      1. substr(x,start,stop)   : 必须指定开始和结束位置
      2. substring(text, first, last=1000000 ) :substring()可以不用指定结束位置,默认为1000000,如果字符串的长度小于1000000,则默认为取到字符串的结尾处
      3. 示例: substring("sinablog",5)  【blog】  substr("sinablog",5,10)  【blog]
    • strsplit、unlist:
      1. strsplit(x, split, extended = TRUE, fixed = FALSE, perl = FALSE) x为待拆分的字符串向量,split拆分模式, fixed为TRUE表示精确匹配
      2. 使用split函数得到的结果是一个列表,如果希望得到一个向量,可以使用unlist函数
      3. 示例: unlist(strsplit("a.b.c", "\.")) 结果:[1] "a" "b" "c"
    • nchar: 取字符长度,示例: x<-"sinablog"    > nchar(x)      结果:[1] 8
    • paste、paste0:
      1. paste在不指定分割符的情况下,默认分割符是空格, paste0在不指定分割符的情况下,默认分割符是空
      2.  > paste("Hello","world")    [1] "Hello world"
        > paste0("Hello","world")   [1] "Helloworld"

    table:


      •  table 对应的就是统计学中的列联表,是一种记录频数的方法。看示例
        > x <- sample(c("a", "b", "c"), 100, replace=TRUE)
        > names(table(x))
        [1] "a" "b" "c"
        > as.numeric(table(x))
        [1] 32 33 35
        > #转data.frame
        > as.data.frame(table(x))
          x Freq
        1 a   32
        2 b   33
        3 c   35
        View Code
  • 相关阅读:
    怎么让百度搜到第一页有自己的
    凡信(超仿微信Android版)开源了,内有源码下载
    可以在GitHub或者码云里 直接搜索 项目 比如 哔哩哔哩
    看雪论坛 破解exe 看雪CTF2017第一题分析-『CrackMe』-看雪安全论坛
    Tomcat+Apache集群方案
    ddms 安卓录制
    Less基础教程
    div+css中height:auto !important; height:663px; min-height:663px !important;区别
    js自定义修改复选框单选框样式,清除复选框单选框默认样式
    css input checkbox和radio样式美化
  • 原文地址:https://www.cnblogs.com/tgzhu/p/5776389.html
Copyright © 2011-2022 走看看