从 R 中的数据表中提取唯一行[重复]

2023-12-22

我正在从数据框和矩阵迁移到数据表,但尚未找到从数据表中提取唯一行的解决方案。我想我遗漏了一些东西[,J]符号,尽管我还没有在常见问题解答和简介小插图中找到答案。如何提取唯一的行,而不转换回数据框?

这是一个例子:

library(data.table)
set.seed(123)
a <- matrix(sample(2, 120, replace = TRUE), ncol = 3)
a <- as.data.frame(a)
b <- as.data.table(a)

# Confirm dimensionality
dim(a) # 40  3
dim(b) # 40  3

# Unique rows using all columns
dim(unique(a))  # 8 3
dim(unique(b))  # 34 3

# Unique rows using only a subset of columns
dim(unique(a[,c("V1","V2")]))   # 4 2
dim(unique(b[,list(V1,V2)]))    # 29 2

相关问题:这种行为是否是数据未排序的结果,就像 Unix 一样uniq功能?


在 data.table v1.9.8 之前,默认行为unique.data.table方法是使用键来确定应返回唯一组合的列。如果key was NULL(默认),人们会取回原始数据集(如在 OP 情况下)。

从 data.table 1.9.8+ 开始,unique.data.table方法默认使用所有列,这与unique.data.frame在基本 R 中。要让它使用键列,请显式传递by = key(DT) into unique(替换DT在调用带有 data.table 名称的 key 时)。

因此,旧的行为会是这样的

library(data.table) v1.9.7-
set.seed(123)
a <- as.data.frame(matrix(sample(2, 120, replace = TRUE), ncol = 3))
b <- data.table(a, key = names(a))
## key(b)
## [1] "V1" "V2" "V3"
dim(unique(b)) 
## [1] 8 3

而对于 data.table v1.9.8+,只需

b <- data.table(a) 
dim(unique(b)) 
## [1] 8 3
## or dim(unique(b, by = key(b)) # in case you have keys you want to use them

或者没有副本

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

从 R 中的数据表中提取唯一行[重复] 的相关文章

随机推荐

  • 与 memcpy 连接

    我正在尝试使用 memcpy 将两个字符串添加在一起 第一个 memcpy 确实包含我需要的数据 然而 第二个并没有添加 知道为什么吗 if strlen g gt db cmd lt MAX DB CMDS memcpy g gt db
  • Google 如何检测来自 WebView 的请求?

    谷歌宣布他们 将不再允许在称为 网络视图 的嵌入式浏览器中向 Google 发出 OAuth 请求 https developers googleblog com 2016 08 modernizing oauth interactions
  • 如何对 .cshtml 文件进行 lint 处理?

    使用 ESLint 可以轻松检查 js 文件 使用 html 或 script tag 之类的插件 在 html 文件中的标签内检查 JavaScript 代码也很简单 但是 当涉及 cshtml 文件内的脚本标记时 我陷入困境 有谁知道如
  • Shell 脚本:使用 xargs 执行 shell 函数的并行实例

    我试图在 shell 脚本中使用 xargs 来运行我在同一脚本中定义的函数的并行实例 该函数对页面的获取进行计时 因此重要的是页面实际上是在并行进程中同时获取的 而不是在后台进程中 如果我对此的理解是错误的并且两者之间的差异可以忽略不计
  • 在哪些领域使用 F# 比 C# 更合适? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在过去的几年里 F 已经发展成为 Microsoft 完全支持的语言之一 采用了 OCaml ML 和 Haskell 中孕育的许多想法 在过去
  • Bash:等待超时

    在 Bash 脚本中 我想做类似的事情 app1 pidApp1 app2 pidApp2 1 timeout 60 wait pidApp1 pidApp2 kill 9 pidApp1 pidApp2 即 在后台启动两个应用程序 并给它
  • Delphi 中 IntraWeb 的替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 IntraWeb for Delphi 有其他替代品吗 如果我想用Delphi编写一个简单但有意义的网络服务器 当我也在做 Delphi
  • UUID 命名空间从何而来?

    The UUID规范 https www rfc editor org rfc rfc4122 html section 4 3定义了 4 个预定义的命名空间 将其描述为 可能有趣 除其他外 这意味着 如果其他人在这个命名空间中生成了 UU
  • 如何解决“迭代器应该返回字符串,而不是字节”

    我正在尝试导入 CSV 文件 使用表单从客户端系统上传文件 获得文件后 我将提取其中的一部分并在我的应用程序中填充模型 但是 当我去迭代上传文件中的行时 出现 迭代器应该返回字符串 而不是字节 错误 我花了几个小时尝试不同的事情并阅读了我能
  • CSS 转换仅在 Chrome 开发工具打开时有效

    我遇到了 CSS 转换的奇怪异常 加载时完全忽略转换 但是如果我打开 Chrome 开发工具并导航 DOM 树 popup gt div gt img并选择它 然后单击主图像 过渡就会起作用 并且即使开发工具关闭也仍然如此 我怀疑我犯了一些
  • 所有输入字段通过 jQuery 代码上的单行/最少行进行验证

    我有一个表单 其中有 30 个输入框 10 个文本区域和 3 个选择框 updated 字段且全部为必填字段 如何通过 jQuery javascript 对所有输入字段应用验证can t be blank empty NULL 我不想每次
  • 如何编写单元测试的输出?

    我的单元测试中的任何调用Debug Write line or Console Write Line 调试时只是被跳过 并且输出永远不会打印 从我正在使用的类中调用这些函数工作正常 我知道单元测试应该是自动化的 但我仍然希望能够从单元测试中
  • 当不使用带有奇怪访问器的注释时加载 mongodb 哈希关联数组映射的正确方法[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我这样做是为了映射文档的非注释映射 但它还没有赶上 我知道这是旧代码 但有人知道如何正确映射它 谢谢 相关公关 https git
  • 尽管发送了“升级”标头,但浏览器不会升级到 h2 (HTTP/2)

    我正在尝试让 h2 HTTP 2 在我的网络服务器上工作 通过 ondrej 存储库安装了 Apache 2 4 20 我在 Debian 8 和 Ubuntu 14 04 服务器上进行了测试 但我不断遇到同样的问题 我正在运行 OpenS
  • Micronaut 使用 HttpClient 读取超时

    我正在努力使用Micronaut HTTP客户端对于多次调用第三方 REST 服务而未收到io micronaut http client exceptions ReadTimeoutException 要消除第三方依赖性 可以使用调用其自
  • 前 3 名得分 - MySQL [重复]

    这个问题在这里已经有答案了 我正在建立一个 前 3 名 排行榜 我想显示前 3 个分数 绘制每个人的最大值 但我不想限制 3 个 因为我想显示具有前 3 个分数的任何人 例如 使用下面的数据 Name Score Matt 17 Mark
  • 通过 Facebook Graph API 提取照片

    我正在尝试提取当前登录个人资料的标记照片 获得了会话 ID 但它似乎是一个空数组 img src 我知道这段代码可能真的很糟糕 我是 PHP 新手 只是尝试了一些东西 如可用文档所述here http develo
  • 如何一次杀死 Unix 中的所有 shell?

    随着时间的推移 我的 Mac 变得越来越慢 原因是我的贝壳数量巨大 例如 Bashes 和 Fishes 每个shell都有不同的PID 一颗颗杀炮弹太麻烦了 怎样才能一次性杀死他们呢 The killall https ss64 com
  • 如何知道我单击了哪个元素来触发模糊事件处理程序? [复制]

    这个问题在这里已经有答案了 非常简单 我有一个模糊 事件处理程序来触发一个函数 我希望当单击某个元素触发模糊时该函数不会触发 我尝试了 document activeElement 但我得到的是 HTMLBodyElement 而不是我单击
  • 从 R 中的数据表中提取唯一行[重复]

    这个问题在这里已经有答案了 我正在从数据框和矩阵迁移到数据表 但尚未找到从数据表中提取唯一行的解决方案 我想我遗漏了一些东西 J 符号 尽管我还没有在常见问题解答和简介小插图中找到答案 如何提取唯一的行 而不转换回数据框 这是一个例子 li