按组在data.table中创建新列

2023-12-04

我没有使用 data.table 的经验,所以我不知道我的问题是否有解决方案(谷歌上的 30 分钟至少没有给出答案),但就这样了。

对于 data.frame,我经常使用以下命令来检查唯一值的观察数量:

df$Obs=with(df, ave(v1, ID-Date, FUN=function(x) length(unique(x))))  

使用data.table时有相应的方法吗?


就在这里。很高兴,您询问了最新的功能之一data.table,在 v1.8.2 中添加:

:=现在已实施按组 (FR#1491) 并子分配给新列 现在通过引用自动添加该列(初始化为NA在哪里 子分配不接触)(FR#1997)。:=按组可以与所有组合 种类i, so :=按组包括分组依据i以及由by。 自从:=by group 是参考,它应该比任何更快 方法(直接或间接)cbind是 DT 的分组结果,因为根本没有创建(大)DT 的副本。这是一种简短而自然的语法,可以与其他查询组合使用。
DT[,newcol:=sum(colB),by=colA]

在您的示例 iiuc 中,它应该类似于:

DT[, Obs:=.N, by=ID-Date]

代替 :

df$Obs=with(df, ave(v1, ID-Date, FUN=function(x) length(unique(x))))

注意:=按组对于大型数据集可以很好地扩展(较小的数据集将有很多小组)。

See ?":=" and 在 data.table 标签中搜索“参考”

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

按组在data.table中创建新列 的相关文章

随机推荐

  • gcm推送通知:先成功,然后未在IOS中注册

    在 IOS 中使用谷歌云消息接收通知的所有段落之后 但我遇到了这个问题 我在 php 中发送带有服务器密钥和设备令牌的通知的帖子 第一次响应为 成功 但在设备上没有收到任何内容 第二次以及随后的时间 响应为 未注册 我重复所有段落 在钥匙串
  • constexpr 对于重载有用吗

    C 中有没有一种方法可以根据输入的运行时 编译时常量调用不同的重载 我的 MSVC 版本 12 无法使用 constexpr 执行此操作 阅读 C 文档 我不确定这是否是 constexpr 的工作方式 inline int Flip4 c
  • 从 Unity 中的另一个脚本访问对象的位置

    我正在制作一个同时包含球和玩家的游戏 到目前为止 我为球制作了一个球体 为玩家制作了一个正方形 模型将在稍后制作 我为玩家附加了一个移动脚本 以便它可以向各个方向移动 但我希望他能够在碰到球时捡起球 为此 我假设在球脚本中的碰撞函数中 我必
  • 如何使用 Sevenzipsharp 提取文件

    我将使用 Sevenzipsharp 将 ISO 文件中的文件提取到 USB 为此 我从 vs nuget 包管理器下载了 Sevenzipsharp 并编写了 实际上我不能 这段代码 我没有接受任何错误 但它不起作用 我哪里会犯错误 请写
  • 使用 javascript 搜索“\”

    我编写了以下代码来仅获取不带扩展名和路径的文件名 我正在浏览器中运行它
  • React-Router 在新选项卡中打开链接

    有没有办法得到反应路由器在新选项卡中打开链接 我尝试了这个 但没有成功 Test 可以通过添加类似的东西来弄乱它onClick foo 像我上面那样链接到链接 但会出现控制台错误 Thanks 从 React Router 版本 5 0 1
  • 用于检查号码以“078”开头且仅包含 10 位数字的正则表达式

    我需要验证 Asp Net 应用程序中的文本框 用户可以在其中输入手机号码 并且该号码应以 078 开头 并应包含 10 位数字 Sample 0781234567 这是我的代码 public static bool CheckPhoneN
  • 在 jQuery 移动应用程序中将参数从一个页面传递到另一个页面

    我正在使用 PhoneGap 构建 jQuery 移动应用程序 我必须使用 jQuery mobile 传递前一个页面的一些参数来打开一个新页面 为此 我尝试使用本地存储 如下所示 li click function console log
  • 使用 ServiceStack.Client 超时

    我已经通过 AJAX 调用使用服务堆栈一段时间了 没有出现任何问题 但最近创建了一个快速 winforms 应用程序 它利用服务堆栈客户端 特别是 JsonServiceClient 然而 我遇到了一个问题 即我一直在呼叫超时 但在前两次尝
  • 为什么Python会改变前面有0的整数的值?

    我实现了一个将整数转换为字符串表示形式的函数intToStr 代码如下 为了进行测试 我传递了一些值并观察到意外的输出 print intToStr 1223 prints 1223 as expected print intToStr 0
  • 将事件处理程序绑定到由 jQuery .html() 函数插入的元素上

    我渲染一些新内容 html ajax 调用我的网站后 getJSON scriptURL domainForm serialize function data checkedDomain html data html 现在 如何将事件处理程
  • 参数包是否有设定限制?

    元素的最大数量是否有上限参数包就像最大模板递归深度一样 我认为没有必要单独进行限制 元素的数量由实例化站点以及可以传递给模板的模板参数数量决定 有一个限制函数调用的参数数量 建议最小值 256 有一个限制模板参数的数量在模板声明中 建议最小
  • 在 PrimeFaces 菜单组件中混合静态和动态菜单条目

    我想在标记中保持菜单的一部分静态 并在 Java 中动态生成另一部分
  • SPARQL 参数化查询

    再会 我将 rdflib 用于 python 我有个问题 如何将变量放入 SPARQL 的查询中 当然不是 OSPF OSPF qres g query SELECT x z y WHERE course OSPF course termN
  • 有没有办法在 SCCM 2012 中重新安装应用程序?

    在 SCCM 2007 中 有几个 右键单击工具 在它们的帮助下可以 重新安装 软件包 在SCCM 2012中我仍然找不到方法 如何重新安装应用程序 让我解释 我从软件创建了一个安装包 然后将其作为 应用程序 分发 安装成功完成 一周后 一
  • 通过 Whatsapp 或 Facebook 分享图像和文本

    我的应用程序中有一个共享按钮 我想同时共享图像和文本 在 GMail 中 它工作正常 但在 WhatsApp 中 仅发送图像 而在 Facebook 中 应用程序崩溃 我用来分享的代码是这样的 Intent shareIntent new
  • 如何在后台运行Python脚本?

    我有一个脚本每 5 分钟检查我的 PC 上的某些内容 但我不希望 Python 显示在我的任务托盘上 我使用 Windows 作为我的操作系统 有没有办法让Python在后台运行并强制它不显示在我的任务托盘中 如果您使用运行控制台脚本pyt
  • xjc:覆盖 xs:simpleType 定义

    我正在使用以下方法将一组 XSD 编译为 Java 类xjc 我希望能够覆盖给定简单类型的数据类型定义 XSD 片段是
  • Android:在 fling 和 onclick 上同步图像也可以显示上一个和下一个视图相同的图像

    我正在使用视图翻转器来翻转大约 20 个图像 并在滑动时翻转 在我的活动底部 我有两个按钮用于手动向左或向右切换图像 这两个按钮正在工作 但我无法显示相同的图像 例如 如果我从图像2滑动到图像3 然后单击 显示下一个 按钮 然后它切换到数组
  • 按组在data.table中创建新列

    我没有使用 data table 的经验 所以我不知道我的问题是否有解决方案 谷歌上的 30 分钟至少没有给出答案 但就这样了 对于 data frame 我经常使用以下命令来检查唯一值的观察数量 df Obs with df ave v1