网站首页 > 技术教程 正文
用过R的童鞋们都知道,R里面的函数小脾气很多,小妹准备开一个系列叫:专治不服收收各种函数们的小脾气!
今天小妹首先给大家掰扯的,是一款数据处理的明星包plyr 的明星函数ddply,这个酷炫的函数曾经给小妹带来好多震撼和方便,但最近却因为跟她一言不合而走了好多弯路,情急之中,小妹死盯了她一晚上,今天就给大家分享这点小case:说,如何处理ddply生成的新数据框的列名问题。
以下部分分为 [极速预告版] 和 [详细分解版]分别适合ddply的熟客们和新手们阅读。
一 极速预告版(适合ddply的熟客们)
本期主要说当使用ddply生成新的数据框A后,R是如何生成A的列名的。简单来说,这完全取决于你如何为ddply输入function这个参数的, 熟客们可火速浏览以下问题,如果熟悉即可迅速推出本文,回去继续撩妹
1 当你提前定义好函数function
例如你输入ddply的function是nrow,你猜下面两种代码结果的列名有什么区别?
2 当你在ddply中直接定义函数,你猜他们的结果列名有什么区别?
3 传说把 summarise 做为函数传入ddply,再把你想计算的统计量做为summarise的后续参数传入ddply ,会使得结果命名更方便,代码更简洁,运算速度更快,你信吗?
二 详细分解版(适合ddply的新手们)
1. ddply到底是个什么样的神函数?
她归属于堪称数据处理神器的 plyr包,出自R界资深高手Hadley Wickham之手(没错就是你爱的ggplot的包主)。R文档里对ddply的官方介绍是:split data frame, apply fuction, and returen results in a data frame
翻译成白话就是,她能把你原来的数据框按照某种属性分隔开,然后分别对每个子数据框运用函数,得到的结果再合成一个数据框
2. 让我们实地看下她的本事吧!
2 ddply 怎么惹小妹了?
说起来,还是小妹昨天所说的命名问题(没看到?请戳。。。看看命名有多重要), 如果大家注意看上面的图就会发现,直接输入函数她生成的数据框 没有好用的列名!V1,V2都是些什么?难道要一个一个colnames 更新吗?开始,小妹一度开始宠幸有类似功能的 aggregate,不过最后深入看看ddply 还得承认小妹图样图森破,仔细指点下参数这个函数还是可以直接搞定命名问题滴~
3 哪那么多废话快上干货!
对对对,下面就是小妹反复尝试得出的一些结果,主要是对第一部分问题的答案!
(1)如果提前定义好function类,再传入ddply函数,那么你可以直接在函数名称上加“双引号”就实现了对列名的定义。
(2)如果在ddply里面再定义函数的话(小妹不是很推荐此类方法,一是后期不容易改函数,二是会出踩到很多奇奇怪怪的雷点)
*要么会自定义为V1
*要么会沿用原数据框的列名,而且竟然还会自动出来sex分组!(此处小妹没搞懂whywhywhy,急需大神出来指点!)
*当两个函数放进去的时候又正常了
(3)最后重磅推荐引入summarise 函数的所有好处,废话不说,先来上结果(此处summarise两种写法都可)
可以看到,代码小清新了许多有木有,这主要是利用了summarize处理数据框的优势。这个函数可以很方便的对数据框的列运算生成新列,最后仍返回一个数据框形式的结果summarise的使用方式如下
summarise(.data, ...)summarise(baseball,
duration = max(year) - min(year),
nteams = length(unique(team)))
所以,整体ddply运行的逻辑是:先把数据框dfx 按照 group 分好组后,将不同的子数据框传给summarize,而后面mean和sd都就是传入summarize的第二个第三个参数。经过小妹验证system.time, 这种做法也是比前面几种快了很多。
<鸡汤分割线>
前几天有幸拜访了加州大学戴维斯分校的蔡知令教授,他送给我们两句话:
一是说做学者要做到四个字:朴实刚毅
二是说 The future is in your own hands, not in others' mouths
第一句话初听就深感震撼,觉得大师学者真的是在人格上也是巨人,待我等小辈学习和追随的远远不止印在书本里的论文;
第二句话初听窃以为老生常谈,但也记在心里,没想到却在后来的某个心智迷惑之时被之救起。所谓越是真理越朴素,关键时刻还是要这些最朴素的大智慧让你静下来,回归自己。
猜你喜欢
- 2024-10-27 经典车Plymouth Road Runner Superbird 哔哔鸟
- 2024-10-27 30天快速入门西门子PLC(第四天)(西门子plc入门教程)
- 2024-10-27 沉船捞出165年前牛仔裤?(沉船捞出165年前牛仔裤视频)
- 2024-10-27 轮胎知识,有这一篇就够了(轮胎了解)
- 2024-10-27 理查德米勒推出拉菲尔·纳达尔RM27-02“石英”陀飞轮限量腕表
- 2024-10-27 索尼推Xperia 1 III更新:魅族Flyme适配的本地应用来了
- 2024-10-27 ply apply comply(plyopen官方网站)
- 2024-10-27 Revit导出3D模型插件【GLTF|OBJ|DAE|STL|PLY|OFF|XYZ】
- 2024-10-27 床品的支数越高越好吗?你完全错了!
- 2024-10-27 搭建庇护所,是野外生存的一项重要技能,它不但可以保暖隔热
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)