Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件组织-如何有效地处理一个data.frame上的不同筛选器组合?_R_Filter_Data.table - Fatal编程技术网

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

文件组织-如何有效地处理一个data.frame上的不同筛选器组合?,r,filter,data.table,R,Filter,Data.table,我目前在R中做了很多描述性分析。我总是使用类似df 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) 在我的realdata.table中,我有7列和各种过滤器组合。 因

我目前在R中做了很多描述性分析。我总是使用类似
df

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)
在我的realdata.table中,我有7列和各种过滤器组合。 因为我总是处理相同的data.table,所以我想找到最有效的方法来过滤数据

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

  • 执行级别:使用
    XL Connect
  • 源文件:此文件接收预筛选的data.table,并从执行级别获取所有文件。如果我在执行级别添加/删除文件,这是必需的
  • 过滤文件:读取data.table并应用一个或多个过滤器,如上所示,使用
    df_green_high
    。通过筛选,筛选文件将创建一个 新建data.table并使用此新筛选的表来源“源文件”
我目前面临挑战,因为我有太多的过滤器文件。有7个变量,有这么多的过滤器组合,所以我迟早会迷路的

  • 我如何才能更有效地进行分析(减少“筛选文件”的数量)

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


我读过一些书和其他类似的问题。然而,在这种情况下,我总是引用相同的基本表,因此应该有一种更有效的方法。我没有CS背景,因此非常感谢您的帮助。在软件方面,我也读过关于创建
包的内容,但我不确定这是否合理。

我通常这样做:

  • 创建一个名为“我的案例列表”的列表
  • 过滤数据,对过滤后的数据进行计算
  • 向每个筛选的数据集添加一个名为“case”的列。用一些字符串填充此列,例如“案例1:颜色=”绿色“&高度>175”
  • 将此数据放入我的案例列表
  • 将列表转换为类似data.frame的对象
  • 将结果导出到sql server
  • 将结果从sql server导入Excel数据透视表
  • 理解结果

尽可能地自动化该过程。

为什么要加载
dplyr
?只使用df[color==“green”&height>175]
有什么问题<代码>数据。表在引擎盖下使用自动索引(优化操作,如
=
%in%
等),因此这些操作应该非常有效。您还可以自己设置键并执行二进制连接,例如
setkey(df,color);df[J(“绿色”)]
。虽然此操作仅在
数据之前的第一次运行时才具有
==
的优势。table
将设置一个辅助键,然后您的代码将得到完全优化。我按照您的建议更改了过滤器的代码。然而,这不是我问题的焦点-(
df[color=="green" & height>175]