[R] column names to row names

eliza botto eliza_botto at hotmail.com
Wed Sep 17 23:46:58 CEST 2014


Thanyou David!!!
:)


> From: dcarlson at tamu.edu
> To: jholtman at gmail.com; eliza_botto at hotmail.com
> CC: r-help at r-project.org
> Subject: RE: [R] column names to row names
> Date: Wed, 17 Sep 2014 14:04:52 +0000
> 
> 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-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of jim holtman
> Sent: Wednesday, September 17, 2014 8:26 AM
> To: eliza botto
> Cc: r-help at 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_botto at 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 at 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 at 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.
 		 	   		  
	[[alternative HTML version deleted]]



More information about the R-help mailing list