文件组织-如何有效地处理一个data.frame上的不同筛选器组合?
我目前在R中做了很多描述性分析。我总是使用类似文件组织-如何有效地处理一个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列和各种过滤器组合。 因
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并应用一个或多个过滤器,如上所示,使用
。通过筛选,筛选文件将创建一个 新建data.table并使用此新筛选的表来源“源文件”df_green_high
- 我如何才能更有效地进行分析(减少“筛选文件”的数量)
- 如何根据使用的过滤器方便地命名导出的文件
我读过一些书和其他类似的问题。然而,在这种情况下,我总是引用相同的基本表,因此应该有一种更有效的方法。我没有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]