在 data.table 中高效插入默认缺失行

2023-12-09

假设我有以下内容data.table :

dt <- data.table(id=c(1,1,1,1,1,1,2,2,2,2),
           wday=c("mon","tue","wed","thu","fri","sat","mon","tue","thu","fri"),
           val=c(2,3,5,8,6,2,3,4,2,6))

    id wday val
 1:  1  mon   2
 2:  1  tue   3
 3:  1  wed   5
 4:  1  thu   8
 5:  1  fri   6
 6:  1  sat   2
 7:  2  mon   3
 8:  2  tue   4
 9:  2  thu   2
10:  2  fri   6

这是另一个聚合的结果data.table。它代表计数(val)的变量取决于工作日(wday)对于不同的个体(id)。问题是,在我的操作过程中,我丢失了计数为 0 的工作日。

所以问题是:我怎样才能更新我的data.table通过为每个 id 插入与缺少的工作日一样多的行来有效地对象val=0 ?

结果如下:

    id wday val
 1:  1  mon   2
 2:  1  tue   3
 3:  1  wed   5
 4:  1  thu   8
 5:  1  fri   6
 6:  1  sat   2
 7:  1  sun   0
 8:  2  mon   3
 9:  2  tue   4
10:  2  wed   0
11:  2  thu   2
12:  2  fri   6
13:  2  sat   0
14:  2  sun   0

非常感谢你的帮助。


我现在能想到的一种直接方法是使用expand.grid获取所有组合,然后使用它来子集化allow.cartesian = TRUE:

setkey(dt, "id", "wday")
vals <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
idx <- expand.grid(vals, unique(dt$id))[, 2:1]
dt[J(idx), allow.cartesian=TRUE]

#     id wday val
#  1:  1  mon   2
#  2:  1  tue   3
#  3:  1  wed   5
#  4:  1  thu   8
#  5:  1  fri   6
#  6:  1  sat   2
#  7:  1  sun  NA
#  8:  2  mon   3
#  9:  2  tue   4
# 10:  2  wed  NA
# 11:  2  thu   2
# 12:  2  fri   6
# 13:  2  sat  NA
# 14:  2  sun  NA

或者,也可以直接构建idx数据表与CJ :

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

在 data.table 中高效插入默认缺失行 的相关文章

  • 线性判别分析图

    如何将样本 ID 行号 作为标签添加到此 LDA 图中的每个点 library MASS ldaobject lt lda Species data iris plot ldaobject panel function x y points
  • 数据帧初始化 - 字符初始化读取为因素?

    我正在尝试初始化这样的数据框 因为我想要一个空数据框 其中两个字符向量作为列 out frame lt data frame Hospital character State character 但是 当我查看该数据框的每一列的类时 它显示
  • 将逗号类分配给数据框中的多个列

    我有一个data frame有几个数字列我要 就像分配 逗号 类一样 这是需要的 因为我有一个中央数据框 我使用 Openxlsx 包过滤并保存到 Excel 并且需要comma类 以便数据在excel中显示为逗号格式 这是数据框 set
  • 在 R 中打印具有长字符串的数据帧

    让我们有一列包含长字符串的数据框 df lt data frame short rnorm 10 0 1 long replicate 10 paste rep sample letters runif 1 5 8 collapse 如何打
  • dplyr 将字符串拆分为逗号分隔的列表

    我正在尝试使用 dplyr 将字符串拆分为逗号分隔的字符串 但运气不佳 dat lt data frame key 1 4 labels c a ab abc b 我试图将标签列设置为 c a a b a b c b 我已经尝试了以下所有变
  • 如何处理“不符合”的数组?

    如何对两个数组进行逐元素算术运算 在第一维度中一致 但也有一个额外的维度 示例 乘法数组a 3 x 3 x 2 按数组b 3 x 3 a lt array 1 18 dim c 3 3 2 b lt diag 3 由于数组不一致 因此以下操
  • dplyr / left_join 中的嵌套管链

    在尝试获取分组滞后变量的过程中 仅使用这是不可能的 lag 建议的解决方案是将数据拉出 滞后不同的行 然后重新加入它 我更喜欢在不创建中间对象的情况下执行此操作 并且希望在链中间执行此操作 然而 它似乎没有像我预期的那样工作 问题似乎是使用
  • 如何在R中得到一个大的稀疏矩阵? (> 2^31-1)

    我使用一些 C 代码从数据库中获取文本文件 并从该文件创建 dgcMatrix 类型稀疏矩阵Matrix包裹 我第一次尝试构建一个具有超过 2 31 1 个非稀疏成员的矩阵 这意味着稀疏矩阵对象中的索引向量也必须比该限制长 不幸的是 向量似
  • R - 在浏览器中获取帮助而不是内置的 R 帮助程序

    我见过 R help 的两种不同行为 当你输入 density例如 帮助已在您的默认浏览器中打开 帮助在内置 R 帮助程序中打开 R 中的窗口 我目前有第二种行为 但我想在浏览器中打开帮助 我可以轻松地在这两种行为之间切换吗 无需重新安装
  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4

随机推荐

  • Symfony Doctrine 找不到要加载的装置

    我从 Symfony 3 4 开始 但负载夹具有问题 当我执行时php bin console doctrine fixtures load然后我收到消息 In LoadDataFixturesDoctrineCommand php lin
  • PHP PDO 潜在的逻辑错误

    我是 PHP 新手 想知道为什么这段代码不向数据库插入任何内容 返回 0 我确信这一定是一个逻辑错误 因为我没有收到任何错误消息 class DbConnection protected db conn public db host loc
  • C# 线程问题

    我正在做的是从先前的按钮单击动态创建的列表视图 然后 ti 启动一个后台工作程序 其中应清除列表视图并每 30 秒用新信息填充 iistview 我不断得到 跨线程操作无效 从创建它的线程以外的线程访问控制 listView 2 priva
  • Numpy 广播

    下面的代码给出了 a 0 11 中的元素在数组 c 的第一行中出现了多少次 a c 0 我如何调整此代码 以便它对 c 中的所有行 而不仅仅是 c 0 执行相同的操作 本质上是一个for循环 import numpy as np c np
  • 通过测试 numpy 数组中的每个元素是否在 2 个数字之间创建布尔数组

    我有一个 numpy 数字数组 我想创建一个具有相同大小和维度的布尔数组 用于说明该元素是否位于两个数字之间 例如 a np array 1 2 3 4 5 6 7 8 9 我知道如果我写 print a gt 3 我得到一个数组 其中前三
  • AVAudioPlayer 不播放任何声音

    我正在开发一个 iOS 应用程序 需要使用AVFoundation框架 Xcode 4 中的工作区结构包含两个项目 Workspace 应用程序本身 主要项目 实用程序库 构建实用程序库后 会生成一个静态库 该静态库在主应用程序中用作框架
  • Numpy:最大值为 NaN

    我关于Python的问题真的很微不足道 我必须修改什么函数max 为任何编译器返回真实值 import numpy as np a np array 1 0 1 np nan The maximal value is 1 It is not
  • Excel VBA 中的多范围相交

    为什么这不起作用 我试图让 Excel 检查 B 列和 D 列中的任何更改 如果 B 列已更改 然后执行一些操作等 Private Sub Worksheet Change ByVal Target As Range Dim lc As L
  • 我可以使用 PHP 将 URL 变量传递给 IFrame 吗?

    我以前没有太多 或根本 使用过 PHP 我有以下代码 我认为应该可以采用 URL 变量并将其传递给 Iframe url 我的问题是 当我点击该页面时 它是打开的 而不是 http sitename com whats on ID 2 it
  • Build.scala 不是在运行中创建的

    我正在尝试学习游戏 正在做教程http www playframework com documentation 2 2 x ScalaTodoList 我遇到的问题是文件project Build scala 不是为我创建的 我应该手动创建
  • 事件触发的 Toast 通知 UWP

    想法 我正在为特定网络自动进行 wifi 登录 其中用户必须通过弹出诸如警报应用程序之类的 Toast 通知来输入凭据 但不是小睡或关闭按钮 而是登录或注销 问题 当用户连接到特定的 wifi 网络时 如何立即触发 toast 通知 您需要
  • 从 Python 调用 LibreOffice 时出错

    调用 LibreOffice 将文档转换为文本 这在 Linux 命令行中工作得很好 soffice headless convert to txt Text document to convert doc 但是当我尝试从 Python 运
  • Foreach 仅显示数组中的最后一项[重复]

    这个问题在这里已经有答案了 我试图创建一个 foreach 循环来迭代数组中的每个项目 但它只捕获最后一个项目 而不迭代第一个项目 我已经剥离了代码 仅显示相关部分 并添加了一些命令来识别问题 如上所述 message kk ll myAr
  • strip_tags() 和 mysqli_real_escape_string() 的安全性

    我正在参与一个关于信息安全的学校项目 其中一项作业是用 PHP 编写一些安全页面 我的小组中没有人了解 PHP 但这不是一个大问题 我们将学到足够的知识来创建所需的简单页面 学生助理给出的建议之一就是使用这两个函数strip tags an
  • Asp.Net MVC 5 中具有身份表和自定义表的多对多关系

    我正在尝试在 Asp Net Identity 生成的表中的用户与我自己的表之间建立关系 该关系必须是多对多 因为许多用户可以处理同一个任务 这是我的表 并且同一时间一个用户可以处理多个任务 public class Task public
  • 保持表单应用程序和 Windows 服务(或任何 n 层,实际上)之间的设置同步

    我有一个执行许多定期活动的 Windows 服务 并且我想从 Windows 窗体应用程序更改此服务的设置 不过 我不确定确保服务具有最新的用户首选项的最佳方法 运行频率 使用哪些文件夹 用户可以指定的其他内容 用户可以随时随意更改设置 我
  • 字体文件中的字体系列名称

    我有一个 ttf 文件 我想检索字体系列名称 通过导入 System Windows Media 命名空间可以最轻松地完成此操作 与从 ByteArray 中获取字体相比 这为您提供了更多的工作空间和更简单的 API using Syste
  • 在 glsl es 2.0、Gamemaker Studio 2.0 中获取渐变平方的问题

    我制作了一个包含 4 个三角形的三角形列表 中间点的颜色不同 然后目标是组合三角形以获得漂亮的渐变 但是三角形的边缘会产生不需要的线条 我不希望这些线条我希望它一直平滑 我怎样才能得到想要的结果 Images 着色器代码 Simple pa
  • 将tinyMCE与Angular 6一起使用,无需apikey(免费)

    我尝试使用 Angular 6 安装tinyMCE 我正在关注以下文档https www tiny cloud docs integrations angular2 一切正常 但我必须有一个 apiKey 才能使用tinyMCE 云 我收到
  • 在 data.table 中高效插入默认缺失行

    假设我有以下内容data table dt lt data table id c 1 1 1 1 1 1 2 2 2 2 wday c mon tue wed thu fri sat mon tue thu fri val c 2 3 5