2014-06-26 56 views
1

有沒有辦法複製ddply的函數?我想通過組獲得相關性,並將結果作爲輸出數據框,而不必加載包plyr。替換R中的ddply函數

比如我有數據幀(DF):

Obs Group Val1 Val2 
Obs1 Group1 1 2 
Obs2 Group1 2 1 
Obs3 Group2 5 6 
Obs4 Group2 6 5 

而且我想輸出的數據框(更正)

Group Correlation 
Group1 -1 
Group2 -1 

我目前使用此功能:

func <- function(df) 
    { 
    return(data.frame(Correlation = cor(df$Val1, df$Val2, method = "pearson"))) 
    } 

    Corr <- ddply(df, .(Group), func) 

我試着用ddply替換:

Corr <- data.frame(sapply(split(df, df$Group),func)) 

但沒有工作。

任何想法?

感謝您的支持。

+2

將數據幀行更改爲'do.call(rbind,lapply(...))' – rawr

+0

@rawr,發表評論爲答案... –

回答

1

此方法只是使用基礎包,也許這樣的事情會工作?

result <- by(df, df$Group, function(x) {cor(df$Val1, df$Val2, method = "pearson")}) 
result.dataframe <- as.data.frame(as.matrix(result)) 
result.dataframe$Correlation <- rownames(result)