[R] stacking consecutive columns
Claudia Beleites
cbeleites at units.it
Wed Nov 17 15:44:53 CET 2010
Dear Gregory,
> Is there an easier, cleaner way to do this? Thanks.
There are of course several ways...
(assuming yearmonth to be a data.frame)
--- 1 ---
year <- colnames (yearmonth) [-1]
year <- gsub ("^[^[:digit:]]*([[:digit:]]*[^[:digit:]]*$)", "\\1", year)
year <- as.numeric (year)
month <- yearmonth$month
precip <- as.matrix (yearmonth [, -1])
long.df <- data.frame (month = rep (month, length (year)),
year = rep (year, each = nrow (yearmonth)),
precipitation = as.numeric (precip))
If you're about to do this more often:
--- 2 ---
package hyperSpec (outdated on CRAN, if you want to install it use the version
on rforge)
has a function array2df which helps with this transformation:
long.df <- array2df (precip, label.x = "precipitation",
levels = list (month = month, year = year)
--- 3 ---
depending on your file (are the column names numbers without the Xs?)
you may be able to abuse a hyperSpec object to read your data easily:
x <- read.txt.wide ("filename", ...more options...)
then
as.long.df (x)
is about what you want.
(You'd probably want to rename the columns)
HTH Claudia
>
> Gregory A. Graves, Lead Scientist
> Everglades REstoration COoordination and VERification (RECOVER)
> Restoration Sciences Department
> South Florida Water Management District
> Phones: DESK: 561 / 682 - 2429
> CELL: 561 / 719 - 8157
>
> ______________________________________________
> 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.
--
Claudia Beleites
Dipartimento dei Materiali e delle Risorse Naturali
Università degli Studi di Trieste
Via Alfonso Valerio 6/a
I-34127 Trieste
phone: +39 0 40 5 58-37 68
email: cbeleites at units.it
More information about the R-help
mailing list