美文网首页
split+lapply组合

split+lapply组合

作者: 鱼啸九天 | 来源:发表于2020-03-15 11:28 被阅读0次

学习了R一段时间,感觉R做的应该是批量,虽然有for循环,apply等函数,但感觉split+lapply组合好理解一些。
split()所做的是接收一个向量或对象x,然后接收一个因子变量f,f用来指定分组的水平(level),x根据f进行分组,分组之后返回一个列表,我们就可以对这些独立的组使用lapply()。

生成三组随机数,然后通过split()进行分组,因子变量设置为3,将x向量分解成3组。
x <- c(rnorm(10), runif(10),rnorm(10,1))
f<- gl(3,10)
split(x,f)
$`1`
 [1]  0.31205453 -0.05808672  0.08195985  1.02003807  1.67009113 -0.34806748  1.31506783
 [8]  3.91626875 -1.30482693  1.80152419

$`2`
 [1] 0.33053769 0.95732387 0.41466116 0.08654552 0.85751283 0.38291069 0.87297021
 [8] 0.44570715 0.47098875 0.45451860

$`3`
 [1]  0.0470334  1.1493512  1.5868259  1.2923148  0.2084253  1.2322888  1.8852816
 [8]  2.0504138 -0.5446027  1.7317540

分组之后使用循环函数lapply求每个组中的统计值

lapply(split(x,f),mean)
$`1`
[1] 0.8406023

$`2`
[1] 0.5273676

$`3`
[1] 1.063909

当然,组合在实际中应用最多的还是数据框,以datasets数据集中的空气质量(airquality)数据集为例,可以看到数据集中包含臭氧、太阳辐射、风力、温度等测量值,以及月份、日期两个测量时间。

library(datasets)
head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

如果想计算臭氧、辐射、风力、温度等测量值在某个月份内的平均值,那就要先使用split对数据进行分类:首先将整个数据框按月分组。然后在进行批量处理。

s <- split(airquality, airquality$Month)
lapply(s, function(x) {colMeans(x[, c("Ozone", "Solar.R", "Wind")])})
$`5`
   Ozone  Solar.R     Wind 
      NA       NA 11.62258 

$`6`
    Ozone   Solar.R      Wind 
       NA 190.16667  10.26667 

$`7`
     Ozone    Solar.R       Wind 
        NA 216.483871   8.941935 

$`8`
   Ozone  Solar.R     Wind 
      NA       NA 8.793548 

$`9`
   Ozone  Solar.R     Wind 
      NA 167.4333  10.1800

相关文章

  • split+lapply组合

    学习了R一段时间,感觉R做的应该是批量,虽然有for循环,apply等函数,但感觉split+lapply组合好理...

  • 组合模式(统一叶子与组合对象)

    目录 从生活场景出发,映射组合模式 组合模式的理论概念 组合模式的实现 组合模式在源码中的应用 组合 “优于” 继...

  • 【剽悍牛人进化营成长记录】说我所做:点评工作——两样作者,共谱乐

    “文章就像音乐,也可以通过字词的组合,语句的组合,段落的组合,软硬与轻重的组合,均衡与不均衡的组合,标点...

  • WIN系统-快捷键

    常用电脑键盘操作快捷键 Ctrl组合键 Shift组合键 Alt组合键 Win组合快捷键 F组合快捷键 更多组合键...

  • flutter进阶

    上一篇 Flutter开篇 widget组合与自绘 组合--返回widget组合.png 组合--继承widget...

  • Go组合-垂直组合

    章节 组合定义作用 一个问题传统 oop 实现能力复用与扩展 - (extends or 组合)oop - ext...

  • 投资组合:永久组合

    永久组合把要投资的资金分成了四等份:25%的股票、25%的国债、25%的现金和25%的黄金。 实际上,我们可以说永...

  • 设计模式:组合模式 职责链模式

    组合模式 职责链模式 组合模式 组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。 在组合模式的树形结...

  • 第4章 结构型模式-组合模式

    一、组合模式简介 二、组合模式的优缺点 三、组合模式的使用场景 、组合模式的实例

  • 组合模式原型解析

    组合模式定义: 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象...

网友评论

      本文标题:split+lapply组合

      本文链接:https://www.haomeiwen.com/subject/okgqehtx.html