gpt4 book ai didi

r - ddply + 汇总函数列名输入

转载 作者:行者123 更新时间:2023-12-05 01:19:47 25 4
gpt4 key购买 nike

我正在尝试使用 ddplysummarise一起来自plyr包,但我很难解析不断变化的列名...在我的例子中,我想要一些可以在 X1 中以编程方式解析的东西,而不是在 X1 中硬编码到 ddply 函数中。

设置示例

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)])

这是我正在努力解决的问题......
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(X1, value))

我不想使用术语 X1 并想使用类似的东西
cor.vars <- ddply(t.df.l, c("day","variable"), summarise, cor(colnames(t.df)[2], value))

但这出现了错误: Error in cor(colnames(t.df)[2], value) : 'x' must be numeric
我还尝试了各种其他组合,这些组合可以解析 cor 中 x 参数的向量值……但由于某种原因,它们似乎都不起作用……

有任何想法吗?

最佳答案

尽管这可能不是 summarize 的预期用途并且必须有更好的方法来解决您的问题,您问题的直接答案是使用 get :

ddply(t.df.l, c("day","variable"), summarise, cor(get(colnames(t.df)[2]), value))

编辑:例如,这是我认为更适合您的问题的一种方法:
ddply(t.df.l, c("day", "variable"), function(x)cor(x["X1"], x["value"]))

以上, "X1"也可以换成 2或变量名称 "X1"等。这取决于您希望如何以编程方式访问该列。

关于r - ddply + 汇总函数列名输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com