[R] About reshape dataset

P Tennant philipt900 at iinet.net.au
Sun Oct 23 03:39:19 CEST 2016


You could convert your data from a wide format to a long format using 
the reshape function in base R:

DF2 <- reshape(DF, direction="long",
         idvar=names(DF)[1:3],
         varying=c("site1_elev", "site1_temp", "site2_elev", "site2_temp"),
         v.names=c("elev", "temp"),
         times=1:2,
         timevar = "siteID")

rownames(DF2) <- NULL
DF2

   year month day siteID elev temp
1 2000     5   6      1 1300   20
2 2000     5   7      1 1300   21
3 2000     5   8      1 1300   19
4 2000     5   9      1 1300   22
5 2000     5   6      2 1500   21
6 2000     5   7      2 1500   22
7 2000     5   8      2 1500   20
8 2000     5   9      2 1500   23

Philip


On 23/10/2016 4:50 AM, lily li wrote:
> Hi R users,
>
> I want to melt a dataframe, but it mixed up the variables.
>
> DF is the original dataset:
> year  month  day  site1_elev  site2_elev  site1_temp  site2_temp
> 2000     5        6        1300          1500            20              21
>
> 2000     5        7        1300          1500            21              22
> 2000     5        8        1300          1500            19              20
> 2000     5        9        1300          1500            22              23
>
> How to melt the dataframe and get the following dataset? Thanks for your
> help.
>
> year  month  day  siteID   elev   temp
> 2000    5         6       1      1300    20
> 2000    5         6       2      1500    21
> 2000    5         7       1      1300    21
> 2000    5         7       2      1500    22
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list