【问题标题】:Means from a list of data frames in R来自R中的数据框列表的意思
【发布时间】:2013-02-11 03:15:38
【问题描述】:

我对 R 比较陌生,有一个复杂的情况需要解决。我已将超过 1000 个数据帧的列表上传到 R 中,并将此列表称为 x。我想要做的是获取某些数据帧并获取整个数据帧的平均值和方差(不包括每个数据帧的第一列)并将它们保存到两个单独的向量中。例如,我希望获取列表中每三个数据帧的均值和方差,从元素 (3) 开始,一直到元素 (54)。

所以我最终想要的是两个向量:

meanvector=c(mean(data frame(3)), mean(data frame(6)),..., mean(data frame(54)))
variancevector=c(var(data frame (3)), var(data frame (6)), ..., var(data frame(54)))

这个问题远远超出了我的知识水平,但我认为我可以使用某种循环有效地做到这一点,但我不知道如何制作这样的循环。任何帮助将非常感激!提前谢谢你。

【问题讨论】:

  • 当你的意思是entire data.frame excluding the first column,你的意思是means of all other columns separately(或)one mean value of entire data.frame with the first column removed
  • 我的意思是整个data.frame的一个平均值,第一列被删除。
  • 好,那我理解对了。我的回答应该有效。
  • 是的,非常好用,再次感谢您!

标签: r list dataframe


【解决方案1】:

您可以使用lapply 并按如下方式传递索引:

ids <- seq(3, 54, by=3)
out <- do.call(rbind, lapply(ids, function(idx) {
    t <- unlist(x[[idx]][, -1])
    c(mean(t), var(t))
}))

【讨论】:

    【解决方案2】:

    如果 x 是 1000 个数据帧的列表,您可以使用 lapply 返回此列表子集的均值和方差。

    ix = seq(1, 1000, 3)
    lapply(x[ix], function(df){
        #exclude the first column
        c(mean(df[,-1]), var(df[,-1]))
    })
    

    【讨论】:

    • 我不确定你是否可以在没有警告的情况下直接取 df 的平均值。这也是每一列的平均值,而不是整个 data.frame (iiuc)。
    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 2021-11-15
    • 2016-01-11
    • 2015-05-19
    • 2012-01-18
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多