美文网首页
Data Science with R in 4 Weeks -

Data Science with R in 4 Weeks -

作者: 慢思考快思考 | 来源:发表于2016-01-13 20:35 被阅读40次

    Reshaping Data

    Reshape & reshape 2

    经常用到的一中分析是reshape - cast。相当于excel里面的pivot 图表。注意,R做pivot table并不是最理想的选择,毕竟,Excel的reorpting功能更强大一些。

    package(reshape)里面有两个function特别重要,melt和cast。

    我们来看一下这两个函数的使用

    Wide and Long data

    Wide Data: Wide data has a column for each variable. For example, this is wide-format data

    变量按照列横向展开的,就要wide data。变量多,展开的列就多,就比较宽.

    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

    Long data: Long-format data has a column for possible variable types and a column for the values of those variables.

    所有的变量存储在一个列里面的,就要long data。变量比较多,这个列的行数就比较多,所以就长。

    #    variable  value

    # 1    ozone 23.615

    # 2    ozone 29.444

    # 3    ozone 59.115

    # 4    ozone 59.962

    # 5      wind 11.623

    # 6      wind 10.267

    melt takes wide-format data and melts it into long-format data.melt把宽数据变成长数据

    cast takes long-format data and casts it into wide-format data.;cast把长数据,变成宽数据。

    > names(airquality) <- tolower(names(airquality))

    > library(reshape2)

    > aql <- melt(airquality)

    > head(aql)

    variable value

    1    ozone    41

    2    ozone    36

    3    ozone    12

    4    ozone    18

    5    ozone    NA

    6    ozone    28

    这时,我们把dataset里面每一个variable都拆解出来。 但有时候,我们不希望看到这么细致的数据,我们只想知道每个月里面的每一天的Ozone,solar是什么样子的。

    我们可以用:

    > aql <- melt(airquality, id=c ("month", "day"))

    > head(aql)

    month day variable value

    1    5  1    ozone    41

    2    5  2    ozone    36

    3    5  3    ozone    12

    4    5  4    ozone    18

    5    5  5    ozone    NA

    6    5  6    ozone    28

    如果想给数据variable重新命名的话:

    > aql <- melt(airquality, id=c ("month", "day"), variable.name = "climate_related", value.name = "values")

    > head(aql)

    month day climate_related values

    1    5  1          ozone    41

    2    5  2          ozone    36

    3    5  3          ozone    12

    4    5  4          ozone    18

    5    5  5          ozone    NA

    6    5  6          ozone    28

    Cast, pivot table

    subset data 或者输出 你想要的若干列数据,然后从cast命令作table

    reference :http://seananderson.ca/2013/10/19/reshape.html

    http://www.statmethods.net/management/reshape.html

    相关文章

      网友评论

          本文标题:Data Science with R in 4 Weeks -

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