替换R中的ddply函数

时间:2014-06-26 16:49:52

标签: r split subset plyr sapply

有没有办法复制ddply的功能?我希望按组获得相关性,并将结果作为输出,而不必加载包plyr。

例如,我有数据帧(df):

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

我想将输出作为数据帧(Corr)

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))

但没效果。

有什么想法吗?

感谢您的支持。

1 个答案:

答案 0 :(得分: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)