- 已编辑
最近我向人推荐使用 Base R 去做数据操作,Base R 总共就那么 10 来个函数做这个事,干嘛要把这个数据操作的问题扩充到 10 来个不是自己维护的 R 包,里面的魔法太多了,根本记不住,出错了也难以兜住,而且作者也在不断的更新里面的函数,甚至重新设计。
Base R 内10来个函数指的是:
reshape
将长的数据框变形为宽的数据框transform
可以在原来的数据框上添加新的一列,这个新的列通常是根据已有的列加减乘除等计算而来subset
提取数据框中的某些列和行,也可以用$
或[
实现order
按照数据框的某(些)列排序,如先按照第一列从小到大排序,再按照第二列从小到大排序split
将数据框按照某个分类变量拆分为列表,后续常常可以接lapply
实现分组计算merge
合并两个数据框 inner outer left 和 right 四种合并方式,和 SQL 中的left_join
等操作如出一辙duplicated
查出是否有重复的记录,后续可以决定是否去掉complete.cases
查出是否有不完整的记录,后续考虑是否要去掉aggregate
聚合,这个就不解释了,大家都懂- 最后再加上
Reduce
、do.call
和apply
真的够了,应付 90% 的数据操作应该没问题
作者最初造了 reshape 包(退休了),接着是 reshape2 (也退休了)然后是 plyr (还是退休了)现在是 purrr 大家猜猜下一个会是谁?
作者也比较 High 造 tidyr 包新搞了
gather
和spread
猜猜这两个函数在干嘛? reshape ! 命名不直观大家都记不住,结果只好请大家来决定叫个啥名好 ,因为又有超级豪华版的 pivot table 等待大家 <https://t.co/cJ0GM1VZ1H>我发现老有人用
by
函数来试图证明 Base R 的糟糕,因为它严重打破一致性,有那么多其它可用来操作的函数,我就想问他为啥要用这个?
最近怼力有点足,大家见谅!