data.table R 中的滞后列表[重复]

2023-12-31

shift in R's data.table非常适合时间序列和时间窗口的东西。但列表的列不会像其他元素的列那样滞后。在下面的代码中,gearLag领先/滞后gear正确,但是gearsListLag不落后gearsList, 反而,shift正在运营gearsList将元素置于同一行中。

dt <- data.table(mtcars)[,.(gear, carb, cyl)]
###  Make col of lists
dt[,carbList:=list(list(unique(carb))), by=.(cyl, gear)]
###  Now I want to lag/lead col of lists
dt[,.(carb, carbLag=shift(carb)
    , carbList, carbListLag=shift(carbList, type="lead")), by=cyl] 

    cyl carb carbLag carbList carbListLag
 1:   6    4      NA         4           NA
 2:   6    4       4         4           NA
 3:   6    1       4         1           NA <-- should be 4 here, not NA
 4:   6    1       1         1           NA
 5:   6    4       1         4           NA
 6:   6    4       4         4           NA
 7:   6    6       4         6           NA
 8:   4    1      NA       1,2         2,NA
 9:   4    2       1       1,2         2,NA
10:   4    2       2       1,2         2,NA
11:   4    1       2       1,2         2,NA
12:   4    2       1       1,2         2,NA
13:   4    1       2       1,2         2,NA
14:   4    1       1         1           NA <-- should be (1,2) here, not NA
15:   4    1       1       1,2         2,NA
16:   4    2       1         2           NA
17:   4    2       2         2           NA
18:   4    2       2       1,2         2,NA
19:   8    2      NA     2,4,3      4, 3,NA
20:   8    4       2     2,4,3      4, 3,NA
21:   8    3       4     2,4,3      4, 3,NA
22:   8    3       3     2,4,3      4, 3,NA
23:   8    3       3     2,4,3      4, 3,NA

有什么建议可以像我在其他元素上滞后一样在列表上滞后吗?


这是有记录的行为。这是示例的一部分?shift:

# on lists
ll = list(1:3, letters[4:1], runif(2))
shift(ll, 1, type="lead")
# [[1]]
# [1]  2  3 NA
# 
# [[2]]
# [1] "c" "b" "a" NA 
# 
# [[3]]
# [1] 0.1190792        NA

为了解决这个问题,您可以为列表中的每个值创建一个唯一的 ID:

dt[, carbList_id := match(carbList, unique(carbList))]

carbList_map = dt[, .(carbList = list(carbList[[1]])), by=carbList_id]

#    carbList_id carbList
# 1:           1        4
# 2:           2      1,2
# 3:           3        1
# 4:           4    2,4,3
# 5:           5        2
# 6:           6      4,8
# 7:           7        6

# or stick with long-form:
carbList_map = dt[, .(carb = carbList[[1]]), by=carbList_id]

#     carbList_id carb
#  1:           1    4
#  2:           2    1
#  3:           2    2
#  4:           3    1
#  5:           4    2
#  6:           4    4
#  7:           4    3
#  8:           5    2
#  9:           6    4
# 10:           6    8
# 11:           7    6

那么,只需shift或任何新的 ID 列。当你需要的值时carbList同样,您必须与新表合并。

或者,如果您实际上不需要使用这些值,而只是浏览它们,请考虑将其设为字符串,例如carbList:=toString(sort(unique(carb)))或与paste0.

附注:使用前先排序toString, paste0 or list.

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

data.table R 中的滞后列表[重复] 的相关文章

  • ggplot2中的两列分组

    是否可以按两列分组 于是叉积就画出来了 经过geom point and geom smooth 例如 frame lt data frame series lt rep c a b 6 sample lt rep c glass wate
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 使用 xtable 对乳胶输出的表进行排序

    我正在尝试生成一个排序表并导出到乳胶中 然而 xtable 似乎无法处理排序表 建议 a lt sample letters 500 replace T b lt table a c lt sort table a decreasing T
  • ggplot2 中的颜色和填充参数有什么区别?

    ggmap location geom density 2d aes long lat df geom point aes long lat color special alpha 0 5 data df 当我更改填充颜色时 我看不出有什么
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • Prolog 中的隔离列表

    我很难理解如何让我的代码显示由偶数和奇数组成的隔离列表 我什至不确定我的理解缺乏什么 显然我对这门语言很陌生 必须在学校使用它 我的命令式和功能性思维不会让我知道这到底是怎么回事 哈哈 现在 不 我不是要求你做我的作业 我只是请你帮我看看我
  • do.call 的 envir 选项如何工作?

    的文档do call states If quote is FALSE 默认值 然后对参数进行求值 在调用环境中 而不是在envir 这句话向我暗示 当quote FALSE 指定envir没有什么区别 然而 事实并非如此 事实上我遇到过需
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • ggplot2以限制为中心的多边形世界地图给出了有趣的边缘

    使用下面的代码我生成了一张以华盛顿特区为中心的地图 解决方案基于科斯克的解决方案在这里 https stackoverflow com questions 10620862 use different center than the pri
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2
  • 为什么我在 R 向量的类别中看到“整数”而不是“向量”

    为什么从数据框中切片的列的数据类型显示为 整数 而不是 向量 df lt data frame x 1 3 y c a b c x y 1 1 a 2 2 b 3 3 c c1 lt df 1 1 1 2 3 class c1 1 inte
  • 使用插入符号完全可重现的并行模型

    当我在插入符中运行 2 个随机森林时 如果设置随机种子 我会得到完全相同的结果 library caret library doParallel set seed 42 myControl lt trainControl method cv
  • 根据 R 中的另一个变量过滤簇中的 id

    我有 100 名患者的数据 每个患者都有 7 天 1 到 7 的值 如何仅在第一天根据另一个变量选择患者 df lt data frame id c 1 1 1 2 2 2 day c 1 2 3 1 2 3 RRT c 0 1 0 1 0
  • 使用 R 进行语言相关排序

    1 如何正确排序 任务是根据英文字母对美国州名缩写进行排序 但我注意到 R 根据某种操作系统语言或区域设置对列表进行排序 例如 在我的语言 立陶宛语 中 甚至拉丁语 非立陶宛语 字母的顺序也与英语字母表中的顺序不同 仅比较两个字母表中的非立
  • 使用 prolog 添加另外两次出现

    我有一个清单 a b a a a c c 我需要为每个元素添加两次以上的出现 最终结果应该是这样的 a a a b b b a a a a a c c c c 如果列表中有一个与下一个项目相同的项目 那么它会继续下去 直到出现一个新项目 当
  • 在 R 中创建 xlsx 工作表 - 字体颜色不起作用

    我正在开发一个项目 需要从特定类型的数据框架自动生成数据电子表格 我读过关于如何执行此操作的有用解释here http www sthda com english wiki r xlsx package a quick start guid
  • 使用循环(或向量化)按向量中的多个元素对列表进行子集化

    我有3个清单data frames my list lt list a data frame value c 1 5 class c letters 1 3 a b b data frame value c 6 1 class c lett
  • R 连接到主机时出错

    我已经安装了 R 3 0 2 和包KEGGREST 在使用它的命令时 我收到以下错误 函数错误 类型 消息 asError TRUE 无法连接到 主持人 使用 internet2 选项后 我可以很好地从互联网安装软件包 该选项使用来自 In
  • 通过 R 连接到 Azure SQL

    下面的代码允许我通过 R 连接到 Azure SQL 服务器 但是 我只能访问 主 数据库 而不能访问我在下面创建的两个数据库 表格显示为空白 有什么想法吗 谢谢 library RODBC library dplyr library DB

随机推荐

  • 什么是 RWS Monad 以及何时使用它

    我在 mtl 库中查找某些内容时遇到了 RWS Monad 及其 MonadTransformer 那里没有真正的文档 我想知道这是什么以及它在哪里使用 我发现 RWS 是 Reader Writer State 的缩写 它是这三个 mon
  • SELECT ... *FOR UPDATE* 的目的是什么?

    我很困惑你为什么要指定FOR UPDATE 为什么数据库关心你要如何处理来自SELECT 编辑 抱歉 我问的问题很糟糕 我知道文档说它将事情变成 锁定读取 我想知道的是 在哪些情况下 可观察的行为在指定之间会有所不同 FOR UPDATE并
  • 如何在Java中格式化时间间隔?

    我创建 J2SE 应用程序 该应用程序需要将两次以毫秒为单位的时间格式化为表示这两次时间之间间隔的字符串 long time1 1334331041677L Fri Apr 13 17 30 41 CEST 2012 long time2
  • 异步函数调用C++0x

    我正在使用以下代码测试 std async 函数http www justsoftwaresolutions co uk threading multithreading in c 0x part 8 futures and promise
  • WIndows API 中的“L”和“LPCWSTR”

    我发现 NetUserChangePassword 0 0 L ab L cd 将用户密码从 ab 更改为 cd 然而 NetUserChangePassword 0 0 LPCWSTR ab LPCWSTR cd 不起作用 返回值表示密码
  • 什么是“ANSI_X3.4-1968”编码?

    在我的系统上查看以下输出 STEP 101 python3 c import sys print sys stdout encoding ANSI X3 4 1968 STEP 102 STEP 103 locale LANG C LANG
  • 杰克编译花了很长时间

    升级我的项目以启用 Jack 和 Java8 功能后 我的 16GB MacBook 似乎无法再构建我的项目 我看到内存使用量越来越高 但进程总是卡在同一点 我的 Gradle 控制台 Executing tasks app assembl
  • 从 CDI Proxy 获取真实对象

    我寻找一种干净的 CDI 解决方案 而不是依赖于 WELD 的解决方案 但到目前为止一无所获 我需要测试我获得的对象列表中的每个元素是否 Inject Any MyInterfacebeans 是一个代理 当true我需要获取真实的对象进行
  • 在 Linux 中读取 USB 网络摄像头的输出

    我正在用 C 语言尝试一些 fread 和 fwrite 所以我用 C 语言编写了这个小程序 从网络摄像头获取数据并将其转储到文件中 以下为来源 include
  • 重新创建 Apple Watch 健身追踪器“进度”栏 - CAShapeLayer 笔划上的渐变

    我正在编写一个应用程序 可以充分利用 Apple Watch 的健身追踪器设计 如下 到目前为止 我已经创建了基本轮廓 它只是一个带有椭圆 CGPath 的 CAShapeLayer 我使用中风开始和中风结束来动画进度 我的问题出现在对轮廓
  • 如何处理锁(JPA)?

    根据Java 持久 锁定 wiki 书籍 http en wikibooks org wiki Java Persistence Locking Common Locking Mistakes 2C Questions and Proble
  • 如何在jetpack compose中设计多圆形进度条?

    我正在尝试使用 jetpack compose 设计一个显示多个进度的进度条 但我没有找到任何库或帮助材料 我只能设计一个进度条 但我需要设计像 只需使用多个CircularProgressIndicator里面一个Box Box cont
  • 有没有办法提高 Xcode 的代码完成能力?

    由于某种原因 不确定从什么时候开始 并不总是这样 但是 当我想写下NS词典 up to NSDi它在暗示我NSDirectoryEnumerationSkipsSubdirectory后代 在设计算法时 苹果的工程师肯定会使用一些 NSDi
  • 计算R中多个矩阵的平均值

    计算相同维度的多个矩阵的平均值的有效方法是什么 如果 A B 是 2 x 2 矩阵 那么 A 2 3 4 5 B 6 7 8 9 平均值 A B 应该给出 4 5 6 7 简单的方法是做 A B num 矩阵 并显式处理 NA 值 还有其他
  • 在 xml 文件中实例化内部类(Preference)

    当您想在某些情况下访问自定义视图时layout xml文件 您有两个选择 该视图属于它自己的类 然后你就做
  • 如何在Javascript中检测Safari 10浏览器?

    我正在使用 var isSafari constructor i test window HTMLElement 但它不适用于新的 Safari 10 关于使用什么有什么建议吗 Thanks edit 如何检测Safari Chrome I
  • 如何通过引用传递子字符串?

    我递归地调用一个函数 传递一个子字符串作为参数 该子字符串始终从当前字符串的开头开始直到一个位置 如果我使用 C 我可以将指针传递到字符串的第一个位置 然后传递必要的长度 尽管如此 我想使用该类获得相同的结果string 是否可以 如果我使
  • 如何检查 iTunes 上是否有新版本?

    我需要在 iTunes 上检查我的 iOS 应用程序版本 如果有新版本可用 我想显示 UIAlert 我不想在我的服务器上存储版本号 因为随时都有更新的版本可用 是否可以在 iTunes 上查看我的应用程序版本 对的 这是可能的 看看这个非
  • 斯坦福 NLP 分类器示例

    我正在尝试学习斯坦福 NLP 分类器 并希望研究文档分类问题 谁能推荐一个可以找到工作示例的地方 我还查看了 Open NLP 库 并找到了许多工作示例 例如 http tharindu rusira blogspot com 2013 1
  • data.table R 中的滞后列表[重复]

    这个问题在这里已经有答案了 shift in R s data table非常适合时间序列和时间窗口的东西 但列表的列不会像其他元素的列那样滞后 在下面的代码中 gearLag领先 滞后gear正确 但是gearsListLag不落后gea