I am trying to use ddply and summarise with the plyr package, but I have difficulty parsing by column names that keep changing ... In my example, I would like something that will parse in X1 programmatically, rather than hard coding in X1 to the ddply function.
setting example
require(xts) require(plyr) require(reshape2) require(lubridate) t <- xts(matrix(rnorm(10000),ncol=10), Sys.Date()-1000:1) t.df <- data.frame(coredata(t)) t.df <- cbind(day=wday(index(t), label=TRUE, abbr=TRUE), t.df) t.df.l <- melt(t.df, id.vars=c("day",colnames(t.df)[2]), measure.vars=colnames(t.df)[3:ncol(t.df)])
This is the bit I'm afraid of ....
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(X1, value))
I do not want to use the term X1 and would like to use something like
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(colnames(t.df)[2], value))
but this causes an error: Error in cor(colnames(t.df)[2], value) : 'x' must be numeric
I also tried various other combos that parse vector values ββfor the argument x in cor ... but somehow none of them work ...
any ideas?