编程技术分享平台

网站首页 > 技术教程 正文

[R语言系列]ddply ( 2 ): “分组”的秘密

xnh888 2024-10-27 16:04:57 技术教程 42 ℃ 0 评论

今天小妹继续掰扯的仍是R语言数据处理领域的明星plyr 包里的,明星函数 ddply的一个参数,来看看这个函数用来“分组”的小秘密。

一 极速预览版

今天的主要内容是:在使用ddply 对数据集A进行分组时,既可以使用A的某列来分,也可以使用A以外的某列数来分;既可以使用A某列的原始值来分,也可以使用A的某列构造一个布尔值来分。

二 详细分解版

首先今天用来演示的数据集仍是一个构造出来的模拟数据,范例如下:

1. ddply的常规分组法

Hadley Wickham 大神说了,第二个参数是要定义这样一个变量:variables to split data frame by, as as.quoted variables,

aformulaorcharacter vector 故以下三种写法都是可以的。

2. ddply的花式分组法

除了干巴巴的用原来的变量分组,能不能变点花样出来?

有没有看到!强大的ddply既可以把变量进行变化后再分组,又可以用原来的变量构造新的判断条件来分组,有木有很高级? (虽然也可以先根据需要构造一个新变量加入原数据,再使用常规做法实现同样目标,但这样写相当于把两步合成一步,更简洁错的机会就更少啦!)

3.ddply的移花接木分组法

最后上ddply借用别的向量来分组的做法。此处添加一列学习成绩,看看学习成绩更高的人平均收入会更高吗?(模拟数据,仅供娱乐)

看到没?同样奏效!唯一需要注意的是:这个借来的向量长度 要与原数据的行数相同才行哦~

4. 小结

使用ddply时,不论索引变量如何设置,都只是给 “输入数据”一个分组的条件而已,只要通过这个变量能让电脑知道:它应该把哪些列放在一起,哪些列分开就可以了

---------------------------------------------

< 鸡汤时间 >

ddply从出生以来就被大家推崇备至,一个重要原因是它分组计算的技能。分组实际上对应的是很高深的“分类解决问题”的思想,借用Hadley Wickham 大神对plyr包的描述所言:

正所谓:学习编程,掌握的函数都只是工具,解决问题的思维才是核心。修炼的路上,以此共勉。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表