【问题标题】:Replace ddply function in R替换 R 中的 ddply 函数
【发布时间】:2014-08-17 15:13:21
【问题描述】:

有没有办法复制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))

但是没有用。

有什么想法吗?

感谢您的支持。

【问题讨论】:

  • 将数据框行改为do.call(rbind, lapply(...))
  • @rawr,发表评论作为答案...

标签: r split subset plyr sapply


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多