Review: apply

plyr包

apply把一个function作用到array或者matrix的margins(可以理解为数组的每一行或者每一列)中,返回值时vector、array、list。

简单的说,apply函数经常用来计算矩阵中行或列的均值、和值的函数.

apply(data.frame,1,fun())

上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:

第一个参数是指要参与计算的矩阵;

第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;

第三个参数是指具体的运算参数。

plyr包属于R base packages。

XXply

第一个字母表示函数应用的对象类型,第二个字母表示函数返回值的对象类型,

字母取值有:

a:  array
l:  list
d:  data.frame
m:  multiple inputs
r:  repeat multiple times

plyr包的ddply函数

第1个参数,输入数据,类型为数据框(data frame)

第2个参数,变量或者多个变量,数据框的分组字段

第3个参数,分组函数,对分组后的子集上进行计算

    library(plyr)
    ddply(iris, .(Species), function(x) colMeans(x[-5]))
    ddply(iris, .(Species), colwise(sum))

colwise

colwise:将对vector的操作函数转换成对df中column的操作函数

操作离散数值变量

catcolwise:

numcolwise:

二、函数tapply(进行分组统计): 
使用格式为:
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)

其中X通常是一向量;INDEX是一个list对象,且该list中的每一个元素都是与X有同样长度的因子;FUN是需要计算的函数;simplify是逻辑变量,若取值为TRUE(默认值),且函数FUN的计算结果总是为一个标量值,那么函数tapply返回一个数组;若取值为FALSE,则函数tapply的返回值为一个list对象。需要注意的是,当第二个参数INDEX不是因子时,函数 tapply() 同样有效,因为必要时 R 会用 as.factor()把参数强制转换成因子。

参考: https://www.cnblogs.com/nanhao/p/6674063.html
https://www.zhihu.com/question/39843392

猜你喜欢

转载自blog.csdn.net/rojyang/article/details/83273156