【问题标题】:cast {reshape}: using variables instead of the columns' namecast {reshape}:使用变量而不是列名
【发布时间】:2013-12-07 09:03:18
【问题描述】:

假设我有一个数据框:

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"

并在强制转换函数中使用变量作为参数:

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

然后我得到以下错误:

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

如何在强制转换函数中使用变量而不是列名?

【问题讨论】:

    标签: r variables reshape


    【解决方案1】:

    你需要构造一个公式:

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

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

    【讨论】:

    • +1。也许提到如果他们使用“reshape2”,他们可以使用get:以下似乎工作dcast(data, get(ID) ~ get(CODE), fun.aggregate=sum)
    【解决方案2】:

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

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

    参数可以(但不是必须)作为字符串传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多