美文网首页
《Learning R》笔记 Chapter 9 下 plyr

《Learning R》笔记 Chapter 9 下 plyr

作者: 天火燎原天 | 来源:发表于2018-02-22 23:40 被阅读0次

    plyr包提供了多种方便的函数。在这里只简单整理里面的apply族函数。
    plyr族的apply形式统一为**apply。 两个 * 可以取的字符有l,d,a,r,_ 。 二者分别代表

     _ = 无输出
    l = list
    d= dataframe
    r = replicate
    a = array
    

    例如laply意为输入list,结果按照array返回,功能类似sapply
    daply输入dataframe,按照某个vector进行拆分后再运行函数,最后输出array。详情参考帮助文档。
    raply,rdply,rlply,r_ply都能够将一个函数重复运行n次,再将结果按照不同方式输出。r_ply无输出结果。

    > raply(5,rnorm(2)) #输出matrix
                  1          2
    [1,]  0.3883049 -0.2169678
    [2,] -1.7860011 -1.8977570
    [3,]  0.3863878 -0.3025431
    [4,]  0.3239897 -1.2374434
    [5,]  1.6825482  1.6953424
    > rdply(5,rnorm(2)) #输出dataframe
      .n         V1         V2
    1  1 -0.8975326 -2.3684047
    2  2 -0.8796698  0.4489358
    3  3 -1.0913203  0.4137911
    4  4 -0.1927564  0.2688524
    5  5 -0.1176810  2.0811032
    

    ddply则是tapply的进化形式。它能够将dataframe按照某些标准分拆为sub-dataframe,再运行函数,最后输出dataframe作为结果。

    ddply(.data, .variables, .fun = NULL, ..., .progress = "none",
      .inform = FALSE, .drop = TRUE, .parallel = FALSE, .paropts = NULL)
    
    > ddply(Orange, # .data
        .(Tree), # .variables 这里的括号里可以有多个factor
        summarize, #指定function的应用范围
        avg.age = mean(age), avg.circ = mean(circumference))
    
      Tree  avg.age  avg.circ
    1    3 922.1429  94.00000
    2    1 922.1429  99.57143
    3    5 922.1429 111.14286
    4    2 922.1429 135.28571
    5    4 922.1429 139.28571
    

    如果在function部分指定为colwise(某函数名) , 则表示将某函数用于除了 .variables之外的所有column;这种方式较为快捷,但一次只能传递入1个函数。
    如果指定为summarize,则可以更详细地指定。

    > ddply(Orange, .(Tree), colwise(sd))
      Tree      age circumference
    1    3 523.6298      42.98062
    2    1 523.6298      43.29302
    3    5 523.6298      58.85980
    4    2 523.6298      66.32424
    5    4 523.6298      71.89741
    

    相关文章

      网友评论

          本文标题:《Learning R》笔记 Chapter 9 下 plyr

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