强制转换{reshape}:使用变量代替列名

Hug*_*ugo 5 variables r 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))
Run Code Online (Sandbox Code Playgroud)

这行代码行之有效:

df<-cast(data,id~code,fun.aggregate=sum)
Run Code Online (Sandbox Code Playgroud)

然后创建以下变量:

ID <- "id"

CODE <- "code"
Run Code Online (Sandbox Code Playgroud)

并将变量用作强制转换函数中的参数:

df <- cast(data, ID~CODE, fun.aggregate=sum)
Run Code Online (Sandbox Code Playgroud)

然后我得到以下错误:

Error: Casting formula contains variables not found in molten data: ID, CODE
Run Code Online (Sandbox Code Playgroud)

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

Rol*_*and 4

您需要构造一个公式:

cast(data, as.formula(paste(ID, CODE, sep="~")), fun.aggregate=sum)
Run Code Online (Sandbox Code Playgroud)

然而,包 reshape 已被包 reshape2 取代(看看它的功能dcast并参见 @Ananda Mahto 的评论)。您可能也对基本 R 中的函数reshape感兴趣。

  • +1。也许要提到的是,如果他们使用“reshape2”,他们可以使用“get”:以下内容似乎有效“dcast(data, get(ID) ~ get(CODE), fun.aggregate=sum)” (3认同)