reshape2包的进化版—tidyr包

tidyr包的作者是Hadley Wickham。这个包常跟dplyr结合使用。

本文将演示tidyr包中下述四个函数的用法:

  1. gather—宽数据转为长数据。类似于reshape2包中的melt函数
  2. spread—长数据转为宽数据。类似于reshape2包中的cast函数
  3. unit—多列合并为一列
  4. separate—将一列分离为多列

下面使用datasets包中的mtcars数据集做演示。

为方便处理,在数据集中增加一列car

gather

gather的调用格式为:

这里,...表示需要聚合的指定列。

reshape2包中的melt函数一样,得到如下结果:

如你所见,除了car列外,其余列聚合成两列,分别命名为attributevalue

tidyr很好的一点是可以只gather若干列而其他列保持不变。如果你想gathermapgear之间的所有列而保持carbcar列不变,可以像下面这样做:

spread

spread的调用格式为:

reshape2包中的cast函数一样,得到如下结果:

unite

unite的调用格式如下:

这里,...表示需要合并的列,col表示合并后的列。

我们先虚构一些数据:

现在,我们需要把datehourminsecond列合并为新列datetime。通常,R中的日期时间格式为”Year-Month-Day-Hour:Min:Second”。

separate

separate的调用格式为:

我们可以用separate函数将数据恢复到刚创建的时候,如下所示:

首先,将datetime分为date列和time列。然后,将time列分为hourminsecond列。

原文摘自:http://www.xueqing.cc/cms/article/105

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注