Here's another approach using stack():
> y <- data.frame(y)
> E <- with(y, data.frame(year, month, day, 
     stack(data.frame(y), select=4:12)))
> colnames(E)[4:5] <- c("discharge", "station")

But there are some differences. For my E:
> str(E)
'data.frame':   36 obs. of  5 variables:
 $ year     : num  1961 1961 1961 1961 1961 ...
 $ month    : num  1 1 1 1 1 1 1 1 1 1 ...
 $ day      : num  1 2 3 4 1 2 3 4 1 2 ...
 $ discharge: num  1 2 3 4 5 6 7 8 9 10 ...
 $ station  : Factor w/ 9 levels "A","B","C","D",..: 1 1 1 1 2 2 2 2 3 3 ...

But for your E:

> str(E)
'data.frame':   36 obs. of  5 variables:
 $ year     : Factor w/ 1 level "1961": 1 1 1 1 1 1 1 1 1 1 ...
 $ month    : num  1 1 1 1 1 1 1 1 1 2 ...
 $ day      : int  1 2 3 4 1 2 3 4 1 2 ...
 $ discharge: Factor w/ 36 levels "1","10","11",..: 1 12 23 31 32 33 34 35 36 2 
...
 $ station  : chr  "A" "A" "A" "A" ...

It seems strange that the discharge and year would be factors and station would 
be character.

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352

----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On 
Behalf Of jim holtman
Sent: Wednesday, September 17, 2014 8:26 AM
To: eliza botto
Cc: r-help@r-project.org
Subject: Re: [R] column names to row names

Use the 'tidyr' package:  your 'month' does not match your desired output -

> x <- structure(c(1961, 1961, 1961, 1961, 1, 1, 1, 1, 1, 2, 3
+         , 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
+         , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27
+         , 28, 29, 30, 31, 32, 33, 34, 35, 36)
+     , .Dim = c(4L, 12L)
+     , .Dimnames = list(NULL, c("year", "month", "day", "A", "B", "C"
+         , "D", "E", "F", "G", "H", "I"))
+     )
> xdf <- as.data.frame(x)
> xdf
  year month day A B  C  D  E  F  G  H  I
1 1961     1   1 1 5  9 13 17 21 25 29 33
2 1961     1   2 2 6 10 14 18 22 26 30 34
3 1961     1   3 3 7 11 15 19 23 27 31 35
4 1961     1   4 4 8 12 16 20 24 28 32 36
> require(tidyr)
> require(dplyr)
> xdf %>% gather(station, discharge, -year, -month, -day)
   year month day station discharge
1  1961     1   1       A         1
2  1961     1   2       A         2
3  1961     1   3       A         3
4  1961     1   4       A         4
5  1961     1   1       B         5
6  1961     1   2       B         6
7  1961     1   3       B         7
8  1961     1   4       B         8
9  1961     1   1       C         9
10 1961     1   2       C        10
11 1961     1   3       C        11
12 1961     1   4       C        12
13 1961     1   1       D        13
14 1961     1   2       D        14
15 1961     1   3       D        15
16 1961     1   4       D        16
17 1961     1   1       E        17
18 1961     1   2       E        18
19 1961     1   3       E        19
20 1961     1   4       E        20
21 1961     1   1       F        21
22 1961     1   2       F        22
23 1961     1   3       F        23
24 1961     1   4       F        24
25 1961     1   1       G        25
26 1961     1   2       G        26
27 1961     1   3       G        27
28 1961     1   4       G        28
29 1961     1   1       H        29
30 1961     1   2       H        30
31 1961     1   3       H        31
32 1961     1   4       H        32
33 1961     1   1       I        33
34 1961     1   2       I        34
35 1961     1   3       I        35
36 1961     1   4       I        36
>

Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.


On Wed, Sep 17, 2014 at 8:28 AM, eliza botto <eliza_bo...@hotmail.com> wrote:
> Dear useRs,
> I have a data frame "y"  starting from 1961 to 2010 in the following manner 
> (where A,B,C ......, I are station names and the values uder these are 
> "discharge" values.)
>> dput(y)
> structure(c(1961, 1961, 1961, 1961, 1, 1, 1, 1, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 
> 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 
> 27, 28, 29, 30, 31, 32, 33, 34, 35, 36), .Dim = c(4L, 12L), .Dimnames = 
> list(NULL, c("year", "month", "day", "A", "B", "C", "D", "E", "F", "G", "H", 
> "I")))
>
> I want it to be in the following manner "E" where the stations names are in a 
> seperate column and all discharge values are in one column.
>> dput(E)
>
> structure(list(year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
> 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
> 1L, 1L, 1L, 1L, 1L, 1L), .Label = "1961", class = "factor"),     month = c(1, 
> 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,     2, 2, 3, 3, 3, 3, 3, 3, 3, 
> 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,     4), day = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 
> 1L, 2L, 3L, 4L,     1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
> 3L,     4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), discharge = structure(c(1L,     
> 12L, 23L, 31L, 32L, 33L, 34L, 35L, 36L, 2L, 3L, 4L, 5L, 6L,     7L, 8L, 9L, 
> 10L, 11L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,     20L, 21L, 22L, 24L, 25L, 
> 26L, 27L, 28L, 29L, 30L), .Label = c("1",     "10", "11", "12", "13", "14", 
> "15", "16", "17", "18", "19",     "2", "20", "21", "22", "23", "24", "25", 
> "26", "27", "28",     "29", "3", "30", "31", "32", "33", "34", "35", "36", 
> "4",     "5", "6", "7", "8", "9"), class = "factor"), station = c("A",  !
   !
>   "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C", "D",     "D", "D", 
> "D", "E", "E", "E", "E", "F", "F", "F", "F", "G",     "G", "G", "G", "H", 
> "H", "H", "H", "I", "I", "I", "I")), .Names = c("year", "month", "day", 
> "discharge", "station"), row.names = c(NA, 36L), class = "data.frame")
>
> I hope I followed all the instructions given to be by some fellows.
> Thankyou very much in advance.
> Eliza
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> 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.

______________________________________________
R-help@r-project.org mailing list
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.

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to