说我有一个数据框:
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函数的列名?
答案 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"))
参数可以(但不必)以字符串形式传递。