R语言学习笔记(六)——apply函数系列与相关函数(by,aggregate,cut,factor)

apply函数族

在这里插入图片描述

分组计算–apply函数

apply(x, margin, fun, ...)
  • x:矩阵或者数组
  • margin:一个向量,给出在哪几个维度上应用函数【1表示行,2表示列,3表示层】
  • fun:要应用的函数
  • :传递给fun的额外参数
二维
> m<-matrix(1:12,nrow=3)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> apply(m,1,sum)
[1] 22 26 30
> apply(m,2,sum)
[1]  6 15 24 33

传递没有函数名的函数

> apply(m,1,function(x){
   
  x=x+1
  sum(x^2)
})
[1] 214 270 334
三维
> sales
, , A

       Q1 Q2 Q3 Q4
apple  24 27 39 38
orange 29 32 23 35
banana 25 24 32 27

, , B

       Q1 Q2 Q3 Q4
apple  32 20 26 39
orange 38 27 26 36
banana 32 32 30 20

apply(sales,3,function(x){
   
  cat('x=\n')
  print(x)
  cat('------------------\n')
  sum(x)
})
=======结果👇=======
x=
       Q1 Q2 Q3 Q4
apple  24 27 39 38
orange 29 32 23 35
banana 25 24 32 27
------------------
x=
       Q1 Q2 Q3 Q4
apple  32 20 26 39
orange 38 27 26 36
banana 32 32 30 20
------------------
  A   B 
355 358 

如果希望查看多个维度,比如在层的基础上对行或者列进行细分,需要引入维度向量,代码中1和3的顺序导致矩阵转置

apply(sales,c(3,1),function(x){
   
  cat('x=\n')
  print(x)
  cat('------------------\n')
  sum(x)
})

ps:也可以用rowSums就传入3即可


分组计算–tapply函数

tapply(x,index,fun,...)
  • 将向量分组以后每组应用函数
  • x:被分组的向量
  • index:一个因子或者多个因子的列表,每个因子都和向量x一样长
  • fun:应用的函数
  • ...:传递给fun的额外参数
单因子分组
> height
 [1] 181 169 163 175 160 183 169 181 181 175
> sex
 [1] Female Female Female Male   Male   Male  
 [7] Female Female Male   Female
Levels: Female Male
''' sex是因子,height是向量'''

> tapply(height,sex,function(x) c(min(x),mean(x),max(x)))
$Female
[1] 163 173 181

$Male
[1] 160.00 174.75 183.00

统计每组个数用table(x)就行

多因子分组
> score<-pmin(round(rnorm(50,mean=80,sd=9)),100)
> sex
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值