王英珍

不积硅步,无以至千里;不积小流,无以成江河

R语言reshape2包的使用--数据变形

26 Jul 2017 »

R reshape2

data

data<-airquality
head(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  

melt 宽数据to长数据

usage: melt(data,id.vars,measure.vars,na.rm = FALSE, value.name = "value")

data1<-melt(data,id.vars=c("Month","Day"))
head(data1)
  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  

dcast 长数据to宽数据

usage:
dcast(data, formula, fun.aggregate = NULL, ..., margins = NULL,
   subset = NULL, fill = NULL, drop = TRUE,
   value.var = guess_value(data))


head(dcast(data1,Month+Day~variable))
    Month Day Ozone Solar.R Wind Temp
1       5   1    41     190  7.4   67
2       5   2    36     118  8.0   72
3       5   3    12     149 12.6   74
4       5   4    18     313 11.5   62
5       5   5    NA      NA 14.3   56
6       5   6    28      NA 14.9   66
7       5   7    23     299  8.6   65
8       5   8    19      99 13.8   59
9       5   9     8      19 20.1   61
10      5  10    NA     194  8.6   69

head(dcast(data1,Month~variable+Day))

Month Ozone_1 Ozone_2 Ozone_3 Ozone_4 Ozone_5 Ozone_6 Ozone_7 Ozone_8 Ozone_9
1     5      41      36      12      18      NA      28      23      19       8
2     6      NA      NA      NA      NA      NA      NA      29      NA      71
3     7     135      49      32      NA      64      40      77      97      97
4     8      39       9      16      78      35      66     122      89     110
5     9      96      78      73      91      47      32      20      23      21
Ozone_10 Ozone_11 Ozone_12 Ozone_13 Ozone_14 Ozone_15 Ozone_16 Ozone_17
1       NA        7       16       11       14       18       14       34
2       39       NA       NA       23       NA       NA       21       37
3       85       NA       10       27       NA        7       48       35
4       NA       NA       44       28       65       NA       22       59
5       24       44       21       28        9       13       46       18