2013-11-22 49 views
3

說我有一個數據幀:投{重塑}:使用變量,而不是列的名稱

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 

如何使用變量,而不是列的名稱與CAST函數?

回答

4

你需要構建一個公式:

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

然而,包重塑已被包reshape2取代(看看它的功能dcast看到@Ananda Mahto的評論)。基礎R中的reshape函數可能也是您感興趣的。

+3

+1。也許提到,如果他們使用「reshape2」,他們可以使用'get':下面似乎工作'dcast(數據,獲取(ID)〜獲取(CODE),fun.aggregate = sum)' – A5C1D2H2I1M1N2O1R2T1

0

您可以使用do.call(),以及:

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

參數可以(但不是必須做的)傳遞的字符串。

相關問題