zoukankan      html  css  js  c++  java
  • apply函数对行/列运算

    apply(X,MARGIN,FUN,...) 对矩阵、数据库、数组按行或列进行迭代计算,返回向量或数组或值列表。

    X: 输入的数组、矩阵,如果是数据框会自动转换成矩阵

    MARGIN:按行计算或按列计算,1表示按行,2表示按列。

    FUN:调用函数名称

    ...:为函数FUN提供额外参数。即如果一个函数有多个参数,那么...就是传入除第一个参数意外的其他参数。

    例子:

    df<-data.frame(x=c("A","B","C","A","C"),'2010'=c(1,3,4,4,3),'2011'=c(3,5,2,8,9),check.names=FALSE)

    df_rowsum<-apply(df[,2:3],1,sum) #对2、3列,采用按行计算。

    df_colsum<-apply(df[,2:3],2,sum) # 采用按列计算

    更多的apply函数家族参考:http://showteeth.tech/posts/15576.html

    对数据框分组计算,用aggregate函数,~左边表示待操作变量,~右边表示依据。注:依据可以是一个或多个。

    例子:

     df_melt<-reshape2::melt(df,id.var="x",variable.name="year",value.name="value")

     > da_group1<-aggregate(value~year,df_melt,mean) # 数据框df_melt,按year对变量value执行mean计算。

     ~右边是多个时,则是右边这些变量不同组合情况下的函数操作。

    如:> df_group2<-aggregate(value~year+x,df_melt,mean)

     ~ 左边是多个变量,表示待操作的是多个变量,这些变量分别依据~右侧变量进行函数操作。

    如> df_group3<-aggregate(cbind(value,year)~x,df_melt,mean)

     对数据框分组计算与aggregate类似但更灵活的是通过dplyr包的groupby()分组,summarise()分组的汇总运算,arrange()分组的变量排序等组合实现与aggregate()类似功能。

    常需要搭配%>%这个多步操作连接符。注:groupyby()常和summarise()搭配使用,后者需要前者分组功能。

    例子:

    > df_groupmean1<-df_melt%>%dplyr::group_by(year)%>% + dplyr::summarise(avg=mean(value)) #与aggregate(value~year,df_melt,mean)效果一致。

    > df_groupmean2<-df_melt%>%dplyr::group_by(year,x)%>%dplyr::summarise(avg=mean(value))#与aggregate(value~year+x,df_melt,mean)效果一致。

     

    本文来自博客园,作者:BioinformaticsMaster,转载请注明原文链接:https://www.cnblogs.com/koujiaodahan/p/15359555.html

  • 相关阅读:
    快速切题 sgu102.Coprimes 欧拉函数 模板程度 难度:0
    快速切题 sgu104. Little shop of flowers DP 难度:0
    poj 1163 The Triangle 搜索 难度:0
    sgu101 欧拉路径 难度:1
    快速切题 poj3414 Pots
    xml学习
    linux
    常用排序算法
    C++面试题目
    软件工程的一些问题
  • 原文地址:https://www.cnblogs.com/koujiaodahan/p/15359555.html
Copyright © 2011-2022 走看看