R:因子的常用函数


►tapply()函数

    在典型的用法中,调用tapply(x,f,g)需要向量x、因子或因子列表f以及函数g。Tapply()执行的操作是,(暂时)将x分组,每组对应一个因子水平(或在多重因子的情况下对应一组因子水平的组合),得到x的子向量,然后这些子向量应用函数g()。

> ages <- c( 25, 26, 55, 37, 21, 42 )

> affils <- c( "R", "D", "D", "R", "U", "D" )

> tapply( ages, affils, mean )

 D  R  U

 41 31 21 

 

    如果有两个或两个以上的因子,则每个因子将产生一系列的组,这些组会被结合在一起,如下:

> ages <- c( 25, 26, 55, 37, 21, 42 )

> affils <- c( "R", "D", "D", "R", "U", "D" )

> tapply( ages, affils, mean )

 D  R  U

 41 31 21

> d <- data.frame( list( gender=c( "M","M", "F", "M", "F", "F" ),

+     age=c( 47, 59, 21, 32, 33, 24 ), 

+     income=c( 55000, 88000, 32450, 76500, 123000, 45650 ) ) )

> d

  gender age income

1      M  47  55000

2      M  59  88000

3      F  21  32450

4      M  32  76500

5      F  33 123000

6      F  24  45650

> d$over25 <- ifelse( d$age > 25, 1, 0 )

> d

  gender age income over25

1      M  47  55000      1

2      M  59  88000      1

3      F  21  32450      0

4      M  32  76500      1

5      F  33 123000      1

6      F  24  45650      0

> tapply( d$income, list( d$gender, d$over25 ), mean )

      0         1

F 39050 123000.00

M    NA  73166.67

 

►split()函数

    tapply()是将向量分割为组,然后针对每个分组应用指定的函数,与之不同的是,split()在第一步就停止了,只是形成分组。

split()的基本形式是:split( x,f ),这里的x和f与tapply(x,f,g)中的x和f的意义类似,即x为向量或数据框,f为因子或因子的列表。该函数可以把x划分为组,并返回分组的列表。

注:x在split()中可以说数据框,而在tapply()中不可以。

> d <- data.frame( list( gender=c( "M","M", "F", "M", "F", "F" ),

+     age=c( 47, 59, 21, 32, 33, 24 ), 

+     income=c( 55000, 88000, 32450, 76500, 123000, 45650 ) ) )

> d$over25 <- ifelse( d$age > 25, 1, 0 )

> split( d$income, list( d$gender, d$over25 ) )

$F.0

[1] 32450 45650 


$M.0

numeric(0) 


$F.1

[1] 123000 


$M.1

[1] 55000 88000 76500

注:Split()的输出是一个列表。

 

 

 

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值