r data.table 就地连接多列

2024-01-01

data.table是惊人的。

我想进行就地联接,但保留两个表中的所有列。这个问题 https://stackoverflow.com/questions/34598139/left-join-using-data-table/34600831演示如何对单个列执行此操作。当我希望连接表中的所有列都出现在最终结果中并将其全部完成在一个内存位置时,如何概括这一点。

library(data.table)
dt1 <- data.table(col1 = c("a", "b", "c"), 
                  col2 = 1:3, 
                  col3 = c(TRUE, FALSE, FALSE))

setkey(dt1, col1)

set.seed(1)
dt2 <- data.table(col1 = sample(c("a", "b", "c"), size = 10, replace = TRUE), 
                  another_col = sample(1:10, size = 10, replace = TRUE), 
                  and_anouther = sample(c(TRUE, FALSE), size = 10, replace = TRUE))

setkey(dt2, col1)

# I want to stick the columns from dt1 onto dt2

# this works
dt3 <- dt2[dt1]
dt3
    col1 another_col and_anouther col2  col3
 1:    a           9        FALSE    1  TRUE
 2:    b           2        FALSE    2 FALSE
 3:    b           9        FALSE    2 FALSE
 4:    b           6        FALSE    2 FALSE
 5:    b           5         TRUE    2 FALSE
 6:    b           8        FALSE    2 FALSE
 7:    c           9         TRUE    3 FALSE
 8:    c           5        FALSE    3 FALSE
 9:    c           7        FALSE    3 FALSE
10:    c           6        FALSE    3 FALSE

# but i want to do this by reference

# this works for one column
dt2[dt1, col2 := i.col2]
dt2

    col1 another_col and_anouther col2
 1:    a           3        FALSE    1
 2:    a           8         TRUE    1
 3:    a           8         TRUE    1
 4:    b           2         TRUE    2
 5:    b           7        FALSE    2
 6:    b          10         TRUE    2
 7:    b           4        FALSE    2
 8:    c           4         TRUE    3
 9:    c           5         TRUE    3
10:    c           8         TRUE    3

# ok, remove that column
dt2[, col2 := NULL]

# now try to join multiple columns 
# this doesn't work
dt2[dt1, (col2 := i.col2, 
          col3 := i.col3)]

# neither does this
dt2[dt1, .(col2 := i.col2, 
          col3 := i.col3)]

# this just give me to the two columns
dt2[dt1, .(col2 = i.col2, 
           col3 = i.col3)]
dt2
   col2  col3
 1:    1  TRUE
 2:    1  TRUE
 3:    1  TRUE
 4:    2 FALSE
 5:    2 FALSE
 6:    2 FALSE
 7:    2 FALSE
 8:    3 FALSE
 9:    3 FALSE
10:    3 FALSE  

                ^

Created on 2018-10-30 by the reprex package https://reprex.tidyverse.org (v0.2.1)

差不多,我想要结果dt3,但我希望它通过引用创建为dt2。谢谢!


我应该看看还有一个问题 https://stackoverflow.com/questions/30913338/join-two-data-tables-and-use-only-one-column-from-second-dt-in-r?rq=1与此相关的很棒的参考。 https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-reference-semantics.html。我所需要做的就是使用函数形式:=操作员。

dt2[dt1, `:=` (col2 = i.col2, 
          col3 = i.col3)]

dt2
    col1 another_col and_anouther col2  col3
 1:    a           3        FALSE    1  TRUE
 2:    a           8         TRUE    1  TRUE
 3:    a           8         TRUE    1  TRUE
 4:    b           2         TRUE    2 FALSE
 5:    b           7        FALSE    2 FALSE
 6:    b          10         TRUE    2 FALSE
 7:    b           4        FALSE    2 FALSE
 8:    c           4         TRUE    3 FALSE
 9:    c           5         TRUE    3 FALSE
10:    c           8         TRUE    3 FALSE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

r data.table 就地连接多列 的相关文章

  • ess-rdired:我收到此错误“现在没有 ESS 进程与此缓冲区关联”

    To use ess rdired为了浏览对象 我按照 ESS 手册并将以下内容添加到我的 emacs autoload ess rdired ess rdired View R objects in a dired like buffer
  • 如何上下移动字符串并从中删除相似的字符串?

    我问了一个可能不太清楚的问题 所以我尝试用一 种可以理解的方式来解释它 这是我的数据 我的数据看起来像这样 看起来像这样 V1 V2 V3 1 Q9UNZ5 Q9Y2W1 2 Q9ULV4 Q6QEF8 3 Q9UNZ5 4 Q9H6F5
  • 配置 fix() 和 edit() 以从 R/RStudio 在 Notepad++ 中打开

    当我在 RStudio 或 RGUI 中执行此操作时 fix SomeFunction 或使用edit 我可以在记事本中看到该函数的代码 有什么方法可以更改此设置 以便代码预览在 Notepad 中打开 而不是在普通的旧记事本中打开 同样
  • data.table 的包装函数

    我有一个已经使用 data frame 上下文编写的项目 为了缩短计算时间 我尝试利用 data table 的速度 我的方法是构造包装函数 读取帧 将它们转换为表 进行计算 然后转换回帧 这是一个简单的例子 FastAgg lt func
  • 根据 R 中的字符串模式选择行

    假设我有以下数据 df lt data frame name c TO for Turnover for people HC people Hello world beenie man apple pears TO is number c
  • 使用 roxygen2 导入两个同名函数

    我是 CRAN 包的维护者 在加载时收到以下消息 checking whether package qdap can be installed 10s 10s WARNING Found the following significant
  • 使用神经网络包进行多项分类

    这个问题应该很简单 但文档没有帮助 我正在使用 R 我必须使用neuralnet多项式分类问题的包 所有示例均针对二项式或线性输出 我可以使用二项式输出进行一些一对一的实现 但我相信我应该能够通过使用 3 个单元作为输出层来做到这一点 其中
  • Shiny:从DT数据表中选定的行获取信息

    我们正在尝试重新创建示例 https demo shinyapps io 029 row selection https demo shinyapps io 029 row selection 使用DT包来渲染数据帧而不是shiny包 DT
  • R,igraph,是否可以用图案填充顶点

    使用 R 和 igraph 绘制图形 我使用颜色来标记顶点类型 请参阅下面的代码 是否可以用图案而不是颜色填充顶点 以便在以彩色和黑白查看时可以区分节点类型 我需要 4 种独特的颜色 图案 colorbrewer 中唯一适合的调色板是这个
  • 如何将数据从长格式重塑为宽格式

    我在重新排列以下数据框时遇到问题 set seed 45 dat1 lt data frame name rep c firstName secondName each 4 numbers rep 1 4 2 value rnorm 8 d
  • 在ggplot2中,箱线图线的末尾代表什么?

    我找不到箱线图线条端点代表什么的描述 For example here are point values above and below where the lines end 我意识到盒子的顶部和底部是第 25 个和第 75 个百分位数
  • 使用 R 下载压缩数据文件、提取并导入 .csv

    我正在尝试使用以下方法从网页下载并提取 csv 文件R 这个问题是重复的使用 R 下载压缩数据文件 提取和导入数据 https stackoverflow com questions 3053833 using r to download
  • R 中具有 p 值的相关矩阵

    假设我想要传导相关矩阵 library dplyr data iris iris gt select if is numeric gt cor y iris Petal Width method spearman gt round 2 现在
  • 如何在R中创建for循环? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 R 编程中启动 for 循环 https stackoverflow com questions 4162363 how to start a for loop in r programmin
  • 如何不显示 ggplot 轴上的所有标签?

    I m trying to using ggplot2 to plot this But as you can see on the x axis you can t read anything 那么如何在 x 轴上显示每 10 年的值呢
  • 如何将 DataTable 转换为动态对象?

    我怎样才能转换DataTable in IEnumerable
  • 基本 dyplr 函数给出错误:“check_dots_used”

    试图找出为什么我会收到此错误 以前从未见过 谷歌没有帮助 check dots used action warn 中的错误 未使用参数 action warn 我在下面的非常基本的试验中收到错误 而且在 group by count 中也收
  • 使用矢量相应地更改传单线条的颜色

    无论如何 是否可以根据某些变量的值更改传单线条的颜色 我用谷歌搜索 发现了这个link http hgoebl github io Leaflet MultiOptionsPolyline demo 然而 我想知道是否有一种简单的方法可以在
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并

随机推荐

  • 如何在Windows 10环境变量中的系统变量中添加多个PATH?

    我错误地删除了系统变量下的整个 PATH 变量 所以我尝试将一个名为 PATH 的变量显式添加到系统变量中 但现在每当我尝试添加多个路径时 每个路径都会覆盖前一个路径 截图1 https i stack imgur com 4V1aj jp
  • Elasticsearch 查询中的 OR 和 AND 运算符

    我有一些具有以下格式的 json 文档 source userId A1A1 customerId C1 component comp 1 timestamp 1408986553 我想根据以下内容查询文档 userId currentUs
  • Rails 3.2 中使用 gmail 或 SendGrid 时出现邮件程序身份验证错误

    我正在尝试从一个非常简单的 Rails 3 2 应用程序设置邮件 尝试过 Gmail 尝试过 SendGrid 得到同样的错误 Net SMTPAuthenticationError in UsersController create 53
  • pandoc 和 mathjax 遇到一些问题

    我正在尝试使用 pandoc 从包含一些乳胶的 markdown 文件生成 html 幻灯片 该文件是在github上 https raw github com rcalsaverini ThesisPresentation master
  • 在 Silverlight 中显示 GIF

    我的网络服务器上的文件夹中有许多 gif dir subdir bla gif etc 在同一台服务器上有一个 Silverlight 3 应用程序 ClientBin bla xap 有没有办法在 Silverlight 应用程序中显示
  • 禁用某些元素的 nganimate

    我正在使用 ngAnimate 模块 但是我所有的ng if ng show等 受其影响 我想利用 ngAnimate 来处理某些选定的元素 对于性能和元素中的一些错误 显示和隐藏速度非常快 thanks 如果您想为特定元素启用动画 而不是
  • WebDriverError:已断开连接:无法连接到渲染器

    Meta 操作系统 OSX 10 12 6 16G29 node modules chromedriver bin chromedriver v ChromeDriver 2 32 498537 cb2f855cbc7b82e20387ea
  • 如何确定 Neo4j 中节点内的属性值类型?

    目前 似乎没有办法确定节点 或关系 中的属性值是数组 集合还是字符串 匹配 n 其中 isArray n myprop 当尝试了解您正在使用的与更新和查询相关的数据类型时 这将非常方便 具体来说 如果您遇到这样的情况 您正在尝试更新属性值
  • 使用 With 绘图与使用 Block 绘图 (Mathematica)

    我想描述一个我一直遇到的问题Plot using With保持定义的参数 本地 我不一定要求解决 我遇到的问题是理解问题 有时我使用如下结构来获取绘图 Method 1 plot1 With vmax 10 km 10 Plot Evalu
  • C# 中的 TimeSpan 到本地化字符串

    有没有一种简单的方法 可能是内置的解决方案 来转换TimeSpan本地化字符串 例如new TimeSpan 3 5 0 将被转换为3 hours 5minutes 仅用波兰语 我当然可以创建自己的扩展 public static stri
  • 计算数据框中某列的百分比 - 按列“分组”

    我是 R 初学者 我需要能够计算数据框中值的百分比 但经常按其他列值 分组 我有一个大约 1000 行的数据框 包含媒体类型 版本 集合 年份 和计数 今年 我可以过滤它们 只获取特定的媒体 trSpdf lt trS trS Mediat
  • 同时进行多个异步回发 - ASP.NET

    说我有2个UpdatePanels在页面和每个UpdatePanel有一台服务器Button每个 当我单击第一个按钮 然后单击第二个按钮并查看 Firebug 时 我发现直到第一个按钮完成后才触发第二个异步回发 这是否按预期工作 我的理解是
  • Excel VBA打印机API,设置颜色和双面打印

    这是我的问题 我正在尝试访问打印机并更改颜色和双面设置 到目前为止 我拥有的代码允许我更改网络打印机的用户首选项 但我有以下两个问题 1 代码将打印机按预期设置为单面或双面 但未正确设置颜色首选项 2 Excel不会自动选择新设置 我仍然需
  • 如何使用 Spring security 创建自己的安全过滤器?

    我想知道是否可以使用 Spring Security API 在 Spring Web 应用程序中创建自己的安全过滤器 我想创建一个通用的安全过滤器 以便只需在 web xml 中添加该过滤器即可将其用于 插入 任何 Web 应用程序 安全
  • 如何动态分配函数代码?

    在 C 语言中 函数指针作为来自某个库的回调的通常途径是包含一个void 用户上下文的指针 void fp void ctx 允许库使用上下文调用回调ctx 假设我使用的库在回调中不包含上下文指针 我需要为每个上下文进行一个回调 在 C 中
  • Cordova Wrapper 应用程序,内部链接在应用程序中加载,外部链接在浏览器中加载

    我有一个简单的Cordova https cordova apache org 包装器应用程序指向外部网页 而不定义任何自己的视图 我想来自该域的所有内部链接都将加载到应用程序内 but 所有外部链接 http twitter com ht
  • 自定义 ostream

    我需要一些指导或指示来了解如何实现自定义 ostream 我的要求是 具有适用于多种数据类型的 目的是将输出发送到数据库 每个 行 应该进入一个单独的记录 每个记录最重要的字段是文本 或 blob 但其他一些字段 例如时间等 大多可以自动推
  • 如何在Cycle.js中顺序请求数据?

    我是响应式编程的新手 正在尝试使用cycle js 试图实现谁关注框本教程 https gist github com staltz 868e7e9bc2a7b8c1f754 但我知道 为了正确实施 和学习目的 我没有一项数据 完整的用户名
  • 使用 jquery 将类添加到父 div

    这应该相当容易 但由于某种原因我很挣扎 我有以下 html 结构 div class div div class changevid div 我想要的是当单击changevid时 应该在子内容之后添加一个名为 active 的类 my co
  • r data.table 就地连接多列

    data table是惊人的 我想进行就地联接 但保留两个表中的所有列 这个问题 https stackoverflow com questions 34598139 left join using data table 34600831演