• 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

  • 相关阅读:
    焦点的相关属性和方法
    laravel 环境配置
    fetch body里数据为ReadableStream 解决办法
    解决NodeJS+Express模块的跨域访问控制问题:Access-Control-Allow-Origin
    mongo启动
    react-native android 打包发布
    delphi 还原窗口
    窗口还原
    款式修改窗口,开发调整过窗口格局保存功能,关了窗口重新打开还是按关闭前的格局.
    希尔排序算法
  • 原文地址:https://www.cnblogs.com/koujiaodahan/p/15359555.html
Copyright © 2020-2023  润新知