[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