cast {reshape}:使用变量而不是列的名称

时间:2013-11-22 13:03:13

标签: r variables reshape

说我有一个数据框:

data <- data.frame(id=c(1,2,2,2), 
                   code=c("A","B","A","B"), 
                   area=c(23.1,56.0,45.8,78.5))

这行代码正常工作:

df<-cast(data,id~code,fun.aggregate=sum)

然后我创建以下变量:

ID <- "id"

CODE <- "code"

并在cast函数中使用变量作为参数:

df <- cast(data, ID~CODE, fun.aggregate=sum)

然后我收到以下错误:

Error: Casting formula contains variables not found in molten data: ID, CODE

如何使用变量而不是使用cast函数的列名?

2 个答案:

答案 0 :(得分:4)

你需要构建一个公式:

cast(data, as.formula(paste(ID, CODE, sep="~")), fun.aggregate=sum)

然而,包reshape已被package reshape2取代(查看其函数dcast并查看@Ananda Mahto的评论)。基础R中的reshape函数也可能对您感兴趣。

答案 1 :(得分:0)

您也可以使用do.call():

do.call("cast", args = list(data = data, formula = paste(ID, '~', Code), fun.aggregate = "sum"))

参数可以(但不必)以字符串形式传递。