有没有办法复制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))
但没效果。
有什么想法吗?
感谢您的支持。
答案 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)