【问题标题】:How to summarize multiple data frames quickly in R如何在 R 中快速汇总多个数据帧
【发布时间】:2013-01-19 15:15:41
【问题描述】:

在此先感谢您提供的任何帮助。我试图简单地总结 R 中的多个数据帧我有一个正在读取的文件,它的输出如下:

             NDC CHARGE GENERIC
4060 68382006401  43.34    true
4061 68382006401  95.04    true
4062 68382006410  16.77   false

我将读取的 .csv 文件保存到变量“数据”中。读取数据后,我将其分为两个其他变量(“true”和“false”),具体取决于 GENERIC 列是真还是假。我想要做的是有效地总结三个不同数据框中的一些列。目前我使用:

sapply(data[,1:2], summarize)
sapply(true[,1:2], summarize)
sapply(false[,1:2], summarize)

总结数据。这种方法现在很好,但我将有更多的变量,而且似乎我应该能够循环它或以某种方式连接数据帧。

【问题讨论】:

  • summarize 可能在一个包中(甚至可能是 Hmisc)。

标签: r csv dataframe summary


【解决方案1】:

您可以将data.frames 放在一个列表中,例如

dat <- data.frame(x=1:5,y=5:1)

datlist <- list(dat,dat,dat)

然后您可以使用 lapply 对所有 data.frames 运行函数:

lapply(datlist, function(x) sapply(x[,1:2], summary))

将所有结果合并到一个data.frame 中的一种非常简单的方法是使用包plyr:

library(plyr)
ldply(datlist, function(x) sapply(x[,1:2], summary))

【讨论】:

    【解决方案2】:

    这只是一个猜测,考虑到这个问题的各种歧义,但也许:

    sapply(data[,1:2], summarize)
    sapply(data[data$GENERIC="true", 1:2], summarize)
    sapply(data[data$GENERIC="false", 1:2], summarize)
    

    最好将数据对象命名为“数据”以外的名称。在这个话题上,甚至有一笔财富让这种命名行为永远发笑

     install.packages("fortunes")
     require("fortunes")
     fortune("dog")
    

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      相关资源
      最近更新 更多