文件组织 - 如何有效地处理一个data.frame上的不同过滤器组合?

时间:2015-03-13 13:23:47

标签: r filter data.table

我目前在R中进行了大量的描述性分析。我总是使用像df这样的data.table

net <- seq(1,20,by=2)
gross <- seq(2,20,by=2)
color <- c("green", "blue", "white")
height <- c(170,172,180,188)

library(data.table)
df <- data.table(net,gross,color,height)

为了获得结果,我确实应用了很多过滤器。 有时我使用一个过滤器,有时我使用多个过滤器的组合,例如:

df[color=="green" & height>175]

在我的真实data.table中,我有7列和所有类型的过滤器组合。 由于我总是处理相同的data.table,我想找到最有效的方法来过滤数据。

到目前为止,我的文件组织如下(自下而上):

  • 执行级别:使用XL Connect
  • 计算并将结果写入Excel文件的多个具有非常特定作业的R脚本(它们之间没有交互)
  • 源文件:此文件接收预过滤的data.table并从执行级别获取所有文件。如果我在执行级别添加/删除文件,则是必要的。
  • 过滤文件:阅读data.table并应用一个或多个过滤器,如上所示df_green_high。通过过滤,过滤文件创建一个 新的data.table并使用这个新的过滤表来源“源文件”。

我目前面临挑战,因为我有太多的过滤器文件。有7个变量,有这么多的过滤器组合,所以我迟早会迷路。

  • 如何更有效地进行分析(减少“过滤文件”的数量?)

  • 如何根据使用的过滤器方便地命名导出的文件?

我已阅读Workflow for statistical analysis and report writing和其他一些类似的问题。但是,在这种情况下,我总是引用相同的基本表,因此应该有一种更有效的方法。我没有CS背景,所以任何帮助都非常感谢。在SOF上,我也读过有关创建package的内容,但我不确定这是否合理。

1 个答案:

答案 0 :(得分:1)

我通常这样做:

  • 创建一个名为“my_case_list”的列表
  • 过滤数据,对过滤后的数据进行计算
  • 为每个过滤的数据集添加一个名为“case”的列。用一些字符串填写此列,即“case 1:color ==”green“&amp; height&gt; 175”
  • 将此数据放入my_case_list
  • 将列表转换为data.frame like object
  • 将结果导出到sql server
  • 将结果从sql server导入Excel Pivot表
  • 理解结果

尽可能自动化流程。