用向量函数进行数据表聚合,取2

2023-11-25

我正在努力使用 data.table 来总结向量函数的结果,这在 ddply 中很容易。

问题 1:使用带有向量输出的(昂贵的)函数进行聚合

dt <- data.table(x=1:20,y=rep(c("a","b"),each=10))

这个 ddply 命令产生我想要的结果:

ddply(dt,~y,function(dtbit) quantile(dtbit$x))

此数据表命令没有执行我想要的操作:

dt[,quantile(x),by=list(y)]

我可以像这样破解 data.table :

dt[,list("0%"=quantile(x,0),"25%"=quantile(x,0.25),
    "50%"=quantile(x,0.5)),by=list(y)]

但是,如果向量函数“分位数”很慢,那么冗长而且也会很慢。

类似的例子是:

dt$z <- rep(sqrt(1:10),2)

ddply(dt,~y,function(dtbit) coef(lm(z~x,dtbit)))

问题 2:使用具有向量输入和输出的函数

xzsummary <- function(dtbit) t(summary(dtbit[,"x"]-dtbit[,"z"]))

ddply(dt,~y,xzsummary )

我可以在 data.table 中轻松完成此类操作吗?

如果这些问题已经得到明确回答,我们深表歉意。

这是一个类似但不相同的问题:返回向量的 data.table 聚合,例如scale()


> dt[ , as.list(quantile(x)),by=y]
   y 0%   25%  50%   75% 100%
1: a  1  3.25  5.5  7.75   10
2: b 11 13.25 15.5 17.75   20

我尝试使用rbind,但这未能生成我认为你想要的 by-y 安排。技巧与as.list (vs. list)是它在给定向量时构造一个多元素列表,而list只将向量放入单个元素列表中。

as.list行为就像sapply(x, list):

> dt[ , sapply(quantile(x), list), by=y]
   y 0%   25%  50%   75% 100%
1: a  1  3.25  5.5  7.75   10
2: b 11 13.25 15.5 17.75   20

您的目标解决方案:

> ddply(dt,~y,function(dtbit) quantile(dtbit$x))
  y 0%   25%  50%   75% 100%
1 a  1  3.25  5.5  7.75   10
2 b 11 13.25 15.5 17.75   20

我对这个解决方案感到有点自豪,但要注意fortunes::fortune("Liaw-Baron principle")…………

最后,根据我们所说的“Liaw-Baron 原则”,可以提出的每个问题实际上都已经 已经被问到了。 -- Dirk Eddelbuettel(引用 Andy Liaw 和 Jonathan Baron 对 R-help 独特问题的看法) R-帮助(2006 年 1 月)

....我搜索了:[r] data.table as.list,并发现我绝不是第一个在 SO 上发布此策略的人:

在 R 中将数据框制成表格

将 ave() 与返回向量的函数一起使用

在 R 的 data.table 环境中创建公式

我真的不知道这是否question会被认为是重复的,但我特别感谢@G.Grothedieck 的最后一个。这可能是我采取策略的地方。该搜索大约有 125 个点击,而我只浏览了前 20 个来收集这些示例,因此可能还有更多我没有发现的珍珠。

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

用向量函数进行数据表聚合,取2 的相关文章

随机推荐

  • 创建对象后检查是否为 null

    我正在创建一个新对象 myobject t new myobject 如果新成功 我应该检查下一行是否有空引用 if null t 或者我可以确定这个对象肯定会不同于 null Thanks 根据C 文档 if new未能成功为新对象实例分
  • 为什么要使用版本控制? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在读一篇博客 作者这样说 除非签入版本控制系统 否则代码就不存在 对你所做的一切使用版本控制 任何版本控制 SVN Git 甚至 CVS 掌握它并使用它 我从未使用过任何类型的版本控制
  • Jenkinsfile 中的动态参数?

    我怎样才能使用Jenkins 动态插件 in a Jenkinsfile 我正在寻找的是 Jenkinsfile 片段 启用Build with ParametersJenkins 工作中的选项 选择后 脚本将填充可使用的列表Dynamic
  • 如何更改Wildfly服务器的IP地址

    我正在准备一个在 Wildfly 上运行的程序以部署到客户站点 并且我需要更改 Wildfly 启动的 IP 地址 例如 如何将 Wildfly 配置为在 127 0 0 2 而不是 127 0 0 1 启动 Update 我在 Windo
  • Ansible:根据 stdout 中的值对异步任务执行 failed_when:

    我正在尝试执行一个failed when 基于来自标准输出的值的异步任务 这是我的任务 name RUN SOME TASK LOCALLY command
  • C#:解决继承类与其基类之间的无效转换异常

    我有两个课程 名为 帖子 和 问题 问题定义为 public class Question Post 我的 Question 类不会覆盖 Post 的任何成员 它只是表达其他一些成员 我想要完成什么 我有一个 Post 类型的对象 其成员已
  • 等待在没有异步包装器的 Chrome 控制台中工作[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我读过 MDN 的等待定义是 await 运算符用于等待 Promise 它只能在异步函数内使用 这在编辑器中有效 但是在 chrome 控制台中 我编写了一个异步函数 然后在全局执行
  • 仅使用 javaScript 对 HTML 中的表格按日期值 desc 列进行排序

    是否可以仅使用 javaScript 来实现排序功能 而不需要任何其他排序库 假设我有一个表 它的第一列具有以下格式的日期值 MM dd yyyy 表还有两列 如下所示 table width 360 border 1 thead tr t
  • 如何在网站中显示类似youtube的视频播放器?

    我正在开发一个网站 我希望上传摄像头录制的视频 并且仅对登录用户可见 但不可下载 我还想编辑视频 让某些图像出现在背景中 并可能记下他们最后一次停止观看视频的时间 也就是说 如果他们在 30 分钟后停止观看 我希望他们下次观看时从 30 0
  • python yaml更新保留顺序和注释

    我使用 python 将密钥插入到 Yaml 中 但我想保留 yaml 中的顺序和注释 This Key is used for identifying Parent tests ParentTest test JOb1 myjob nam
  • 将数据从 Python 发送到 Javascript (JSON)

    我知道 JSON 可以解决这个问题 但我在实现它时遇到了问题 这是我的方法的详细信息 数据是用Python计算的 由于数据大小是动态的 因此我需要使用 JavaScript 为输出创建额外的 HTML 表格行 因此 我需要将数据从 Pyth
  • Selenium 服务器错误:无法创建新服务 chromedriverservice

    我尝试在 Windows 10 计算机上运行 webdriverio 但在尝试运行测试 js 文件时不断遇到相同的问题 所以我运行这个 jar your download directory selenium server standalo
  • 重用WCF服务客户端

    我有一个 WCF Web 服务 充当我的 ASP NET 网页的数据提供程序 在整个网页中 通过自动生成的 ServiceClient 对 Web 服务进行了多次调用 目前 我创建一个新的 ServiceClient 并为每个请求打开它 即
  • R 中的连续引用编号:如果是连续的,则用连字符分隔数字 - 如果不是,则添加逗号

    我想生成连续引用数对于 R 中的数字 如果数字是连续的 则应使用连字符分隔它们 否则 数字之间用逗号分隔 例如 数字1 2 3 5 6 8 9 10 11 and 13应该出来为1 3 5 6 8 11 13 这个问题已经被之前回答过c 并
  • 在 Angular 2 中的 @ngModule 中声明多个组件

    我正在开发一个大型应用程序Angular 2 and ASP netMVC 我的应用程序中有大约 120 个组件 它们都在 ngModule 声明块中声明 NgModule imports CommonModule declarations
  • Swift 的 String.count 的 BigO 是什么?

    当 swift 使用时String count is it O n 每次我们调用它时 我们都会迭代整个字符串以对其进行计数 or O 1 其中 swift 之前已经存储了该数组的大小并简单地访问它 绝对是O n 来自斯威夫特书 因此 如果不
  • 使用注解@SpringBootApplication进行配置

    我的 Spring Boot 配置有问题 我已经使用创建了基础 Spring Boot 项目https start spring io 我有一个问题 配置仅适用于子目录中的类 我尝试过注释 ComponentScan但这没有帮助 你知道我能
  • 在 Python 3 中解压缩 gzip 服务器响应的最佳方法是什么?

    我原以为这会起作用 gt gt gt import urllib request as r gt gt gt import zlib gt gt gt r urlopen r Request http google com search q
  • 如何在 OpenGL-ES 2.0 中创建带有纹理(图像)的 Stencil 缓冲区

    我可以在 OpenGL 2 0 中准备带有纹理 图像 的模板吗 这样图像的某些部分将是透明的 因此它将按原样传输到模板缓冲区 然后将使用此模板缓冲区进行进一步绘制 由 datenwolf 编辑以解释答案中的 OP 问题更新 作者 Infin
  • 用向量函数进行数据表聚合,取2

    我正在努力使用 data table 来总结向量函数的结果 这在 ddply 中很容易 问题 1 使用带有向量输出的 昂贵的 函数进行聚合 dt lt data table x 1 20 y rep c a b each 10 这个 ddp