data.table高效回收

2024-01-12

我经常在 data.table 中使用回收,例如当我需要对未来几年进行预测时。 我会在未来的每一年重复我的原始数据。

这可能会导致类似的情况:

library(data.table)
dt <- data.table(cbind(1:500000, 500000:1))
dt2 <- dt[, c(.SD, .(year = 1:10)), by = 1:nrow(dt) ]

但我经常需要处理数百万行,以及比这个玩具示例多得多的列。 时间增加.. 尝试这个 :

library(data.table)
dt <- data.table(cbind(1:50000000, 50000000:1))
dt2 <- dt[, c(.SD, .(year = 1:10)), by = 1:nrow(dt) ]

我的问题是:有没有更高效的方法来达到这个目的?

谢谢你的帮助 !

编辑 : 对于这个问题的表述,所接受的答案是最完整的(到目前为止),但我意识到我的问题有点棘手。 我会问另一个问题来展示它:data.table高效回收V2 https://stackoverflow.com/questions/59197298/data-table-efficient-recycling-v2


我认为这个问题是交叉连接。没有内置的方法可以在两个数据表之间进行交叉连接(CJ函数适用于向量),但从讨论来看在这个问题上 https://github.com/Rdatatable/data.table/issues/1717#issuecomment-545758165,这个函数效果很好:

CJDT <- function(...) {
    Reduce(function(DT1, DT2) cbind(DT1, DT2[rep(1:.N, each=nrow(DT1))]), list(...))
}

使用您的大型示例,这对我有用:

years = data.table(year = 1:10, key = "year")
setkey(dt)
dt3 = CJDT(dt, years)

您的方法在内存耗尽之前需要更长的时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

data.table高效回收 的相关文章

随机推荐

  • 涉及动态字段的数据库结构

    我正在做一个项目 它主要是为了学习目的 我发现实际上尝试一个复杂的项目是掌握基础知识后学习语言的最佳方法 数据库设计不是强项 我开始阅读它 但它还处于早期阶段 我仍在学习 这是我的 alpha 模式 我真的只是想记下我能想到的所有内容 看看
  • 通过 IMAP 添加自定义 RFC822 标头?

    有没有一种简单的方法可以使用 imaplib 将自定义 RFC822 标头添加到 IMAP 服务器上的邮件中 我正在编写一个基于 python 的程序来过滤我的 IMAP 邮件存储 当我使用 Procmail 执行此操作时 我可以选择添加标
  • 如何在 ASP.NET MVC 身份上设置自定义身份验证?

    我需要的 我有一个 ASP NET 身份系统设置并使用外部登录运行 无论出于何种原因 我需要在 ASP NET 身份验证之后设置自定义身份验证 让我解释一下如何 假设我有三个页面供用户在我的应用程序上查看 页面 A B C 谁可以查看页面
  • docker-compose - ADD 失败:构建上下文之外的禁止路径

    我有这样的文件夹结构 project config docker Dockerfile docker compose yml src here is code requirements txt Dockerfile FROM python
  • React:TypeError:尝试使用react-bootstrap容器时无法读取null的属性(读取'useContext')

    正如标题中所述 我正在尝试创建一个布局组件 但使用任何react bootstrap组件似乎都会给我错误 在这种情况下 使用我收到错误 类型错误 无法读取 null 的属性 读取 useContext 该布局组件的代码如下 import R
  • awk中的浮点计算

    我对以下行为感到惊讶awk表演时浮点计算 这导致我对表数据的计算错误 awk BEGIN print 2 3 0 1 23 lt Ok awk BEGIN print int 2 3 0 1 22 lt Wrong awk BEGIN pr
  • 使用 NSLocalizedString 的最佳实践

    我 像所有其他人一样 使用NSLocalizedString本地化我的应用程序 不幸的是 有几个 缺点 不一定是 NSLocalizedString 本身的错误 包括 Xcode 中的字符串没有自动补全功能 这使得工作不仅容易出错 而且令人
  • Java找不到主类

    我编写了以下 Java 源文件 Hello java package com public class Hello public static void main String args System out println Hello 我
  • Int32.ToString() 是否特定于区域性?

    我正在运行 ReSharper 的 Beta 版本 它向我发出以下代码的警告 int id DoSomethingWith id ToString 警告位于id ToString 调用 它告诉我 明确指定字符串转换中的区域性 我理解这个警告
  • Tomcat 5.5 中的永久 301 重定向

    是否可以使用独立运行的 Tomcat 5 5 而不是在 IIS Apache 后面 进行 301 重定向 没有一种方法可以像使用 Apache 那样轻松地进行设置 最接近的方法是创建一个 servlet 或 jsp 来处理重定向 然后将其映
  • 时间间隔的 NSPredicate

    我有一张表 其中有 4 个字段 开始日期 结束日期 开始时间和结束时间 我需要设置谓词类似 if startdate lt currentdate and currentdate lt enddate if starttime lt cur
  • 如何在 Xcode 4.4 中将部署目标从 iOS 5.1 更改为 4.2

    我试图在 Xcode 4 4 中将部署目标从 5 1 更改为 4 2 但它不起作用 我下载了 4 1 4 2 的调试支持 我将架构设置为armv6 armv7 我在plist中设置了armv6 armv7 我不使用故事板 It s a 已知
  • 大型列表上单击事件的 jQuery 委托性能 - 如果动态添加更多元素,速度会变慢?

    我有一个像这样的项目的可视列表 http jsfiddle net viatropos XCe3T 1 http jsfiddle net viatropos XCe3T 1 在真实的应用程序中 我总共只加载 200 个项目 但问题是cli
  • 无法解析 Android Studio 上的符号“android”

    我一直在制作一个显示 MapView 的应用程序 它已经构建完毕 我什至在我的设备上使用它 现在我想添加更多功能 但工作室突然给出错误 无法解析符号 android 我将工作室更新到 0 8 6 最新 但是该死的 没有什么变化 Errors
  • 下载SSRS报告并保存在特定位置(C#)(未经授权)

    Question 我正在尝试通过其 URL 将 SSRS 报告下载到数据缓冲区 字节数组 中 因此我可以将其保存在特定的文件夹中 并使用我选择的名称 如果需要的话 我愿意接受不同方法的建议 问题 但是我不断收到以下错误 401 未经授权 无
  • 字符串变量的 Null 或空检查

    if isnull value 我想知道上面的代码是否可以检查变量是否为空或空 是的 该代码正是这样做的 您还可以使用 if value is null or value Edit 添加的信息表明 value is an int值 你需要
  • 使用 Angular SPA 应用程序与 IdentityServer4 进行身份验证/授权接收令牌,然后与 Web API 进行对话

    我有一个 asp net core Web API 我目前正在使用 Angular 4 应用程序直接调用它 我现在想添加身份验证和授权层 我想通过向我的解决方案添加另一个类型为 ASP NET Core MVC 带个人用户帐户 的项目 严格
  • 为什么在使用 JPA 映射类时应该在 getter 或 setter 上添加注释?

    主题说明了一切 到目前为止 我认为人们在 getter 和 或 setter 上声明注释没有任何优势 对我来说 这唯一的缺点是将注释分散到类上 这会使类更加难以阅读 将注释放在字段上显然可以减少需要帮助时发布的代码量 但这只是一个微小的优势
  • 如何在 scala 中进行依赖注入?

    除了java之外 我还处于学习scala的开始阶段 我不明白如何在那里进行DI 我可以或者应该使用现有的 DI 库 应该手动完成还是有其他方法 标准 Java DI 框架通常可与 Scala 配合使用 但您也可以使用语言构造来达到同样的效果
  • data.table高效回收

    我经常在 data table 中使用回收 例如当我需要对未来几年进行预测时 我会在未来的每一年重复我的原始数据 这可能会导致类似的情况 library data table dt lt data table cbind 1 500000