[R] Merge and specify column output order
smartpink111 at yahoo.com
Wed Jan 15 23:15:43 CET 2014
It would be better to post a reproducible example.
df1 <- cbind(as.data.frame(matrix(sample(60,40,replace=TRUE),ncol=4)),date=seq(as.Date("2013-05-10"),length.out=10,by=1))
colnames(df1)[-5] <- paste0("mod",1:4)
df2 <- data.frame(obs=1:20,wy=sample(12,20,replace=TRUE),date=seq(as.Date("2013-05-12"),length.out=20,by=3))
An <- c(colnames(df1),colnames(df2))
# mod1 mod2 mod3 mod4 obs wy date
#1 18 57 60 24 1 4 2013-05-12
#2 32 57 31 50 2 8 2013-05-15
#3 40 29 27 55 3 12 2013-05-18
On Wednesday, January 15, 2014 4:44 PM, Janet Choate <jsc.eco at gmail.com> wrote:
i am merging two data frames of different time periods, so that the result
contains data from both for the same time period.
however, I want the result to output columns in a certain order.
the common column between the two data frames is date.
mod1 mod2 mod3 mod4 date #(there are actually 691 mod columns)
obs wy date
after merge, i want the order of the columns to be all mod data columns
from df1, followed by the obs and wy columns from df2, followed by the date
i almost get want i want with (at least it doesn't put the common column
date as the first column as merge does by default):
new = merge(df1, df2, by=c("date"))[, union(names(df1), names(df2))]
however, that of course gives me all of df1 followed by all of df2, which
doesn't put obs immediately after the mod columns:
what i get:
mod1 mod2 mod3 mod4 date obs wy
what i want:
mod1 mod2 mod3 mod4 obs wy date
any suggestions on how to output the columns in the order i want, without
having to rearrange the order after the fact?
thank you for any help!
[[alternative HTML version deleted]]
R-help at r-project.org mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help