Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

reshape data in r when reshape cannot guess the names of the time varying variables

Tags:

r

reshape

I have a dataset in wide form with more than 1500 columns. Since many of the variables are repeated I´d like to reshape into long form. However, r throws an error:

Error in guess(varying) : 
  Failed to guess time-varying variables from their names

Trying to understand this with a toy example I find that

u<-data.frame(id=1:100,f.1=rnorm(100),u.1=rnorm(100),i.1=rnorm(100),f.2=rnorm(100),u.2=rnorm(100),i.2=rnorm(100),
                  f.3=rnorm(100),u.3=rnorm(100),i.3=rnorm(100))

reshape(u,varying=2:10,direction="long")

works fine. However, my data looks more like :

u<-data.frame(id=1:100,f1=rnorm(100),u1=rnorm(100),i1=rnorm(100),f2=rnorm(100),u2=rnorm(100),i2=rnorm(100),
              f3=rnorm(100),u3=rnorm(100),i3=rnorm(100))

reshape(u,varying=2:10,direction="long")

and this is where I´m lost. Any smart idea, except of changing the variable names (which is tiring), of how I can do this?

like image 384
Misha Avatar asked Aug 20 '12 21:08

Misha


People also ask

What does the reshape function do in R?

Description. This function reshapes a data frame between 'wide' format with repeated measurements in separate columns of the same record and 'long' format with the repeated measurements in separate records.

What is reshape package in R?

reshape2 is an R package written by Hadley Wickham that makes it easy to transform data between wide and long formats.

How do you reshape wide to long in R?

The easiest way to reshape data between these formats is to use the following two functions from the tidyr package in R: pivot_longer(): Reshapes a data frame from wide to long format. pivot_wider(): Reshapes a data frame from long to wide format.


1 Answers

Add the v.names argument:

reshape(u,varying=2:10,direction="long", v.names=c("f", "u", "i"))
    id time          f          u             i
1.1  1    1  1.7821678  0.5144692  0.0006889928
2.1  2    1 -0.5036801  1.8242030  0.9695553817
3.1  3    1  1.1857706  0.6469423  0.6775602175
4.1  4    1 -0.5759202 -1.0349980  0.7183451146
5.1  5    1 -2.3559773  0.8598020  0.5506339475
6.1  6    1 -0.8047651 -1.4768172 -0.3667918383
...
like image 121
Andrie Avatar answered Sep 18 '22 22:09

Andrie