根据另一列的聚合将非聚合列添加到聚合数据集中

2024-01-14

是否可以使用聚合函数从原始数据框中添加另一列,而不实际使用该列来聚合数据?

这是一个非常简化的数据版本,将有助于说明我的问题(我们称之为数据)

name      result.1    result.2    replicate    day     data.for.mean
"obj.1"   1           "good"      1            1        5
"obj.1"   1           "good"      2            1        7
"obj.1"   1           "great"     1            2        6
"obj.1"   1           "good"      2            2        9
"obj.1"   2           "bad"       1            1        10
"obj.1"   2           "not good"  2            1        6
"obj.1"   2           "bad"       1            2        5
"obj.1"   2           "not good"  2            2        3

"obj.2"   1           "excellent" 1            1        14
"obj.2"   1           "good"      2            1        10
"obj.2"   1           "good"      1            2        11
"obj.2"   1           "not bad"   2            2        7
"obj.2"   2           "bad"       1            1        4
"obj.2"   2           "bad"       2            1        3
"obj.2"   2           "horrible"  1            2        2
"obj.2"   2           "dismal"    2            2        1

您会注意到 result.1 和 result.2 是绑定的,如果 result.1 == 1,则 result.2 是好/很棒,如果 result.1 == 2,则 result.2 == bad/不好。我需要聚合数据集中的这两列,并且聚合数据时选择 result.2 中的哪个值并不重要,我只需要信息来确定 result.1 列的 1 值是好还是坏, result.2 类似。因此它可能具有与 result.1 的所有值 2 相对应的所有“dismal”值。

问题是,由于 result.2 使用不同的名称来识别好/坏,我无法将它用作聚合的列。

目前我的聚合函数看起来像这样......

aggregated.data <- aggregate(data[c("data.for.mean")], 
            by=data[c("name", "result.1", "day") ],
            FUN= mean }
        );

这会给出一行输出,如下所示......

name     result.1    day    data.for.mean
"obj.1"  1           1      6

(obj.1 的所有重复,第 1 天的 result.1 == 1 已被平均。它们的值为 5 和 7,是我的模拟数据集中的前两行。)

我想要的会产生一行这样的输出

name     result.1    result.2    day    data.for.mean
"obj.1"  1           "good"      1      6

同样,对于与 result.1 的值“1”相对应的所有值,“好”可以替换为“很棒”、“不错”、“优秀”。

从 result.2 捕获信息并将其添加到aggregate.data(聚合函数的输出)的最佳方法是什么?

谢谢。


这是base中的一个解决方案,它使用merge随后是另一个aggregate:

agg.2 <- merge(aggregated.data, data[,names(data) != 'data.for.mean'])
aggregate(result.2 ~ name+result.1+day+data.for.mean, data=agg.2, FUN=sample, size=1)
##    name result.1 day data.for.mean  result.2
## 1 obj.2        2   2           1.5    dismal
## 2 obj.2        2   1           3.5       bad
## 3 obj.1        2   2           4.0       bad
## 4 obj.1        1   1           6.0      good
## 5 obj.1        1   2           7.5     great
## 6 obj.1        2   1           8.0  not good
## 7 obj.2        1   2           9.0   not bad
## 8 obj.2        1   1          12.0 excellent

这是它的工作原理:

合并添加了result.2值,但会在有多个此类值的情况下创建多行。然后aggregate用于选择这些行之一。

正如你所说,你不在乎哪个相关result.2你得到的标签,我随机得到一个sample.

返回第一个result.2标签、用途head with n=1反而:

aggregate(result.2 ~ name+result.1+day+data.for.mean, data=agg.2, FUN=head, n=1)

同样,要获取最后一个这样的标签,请使用tail with n=1.

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

根据另一列的聚合将非聚合列添加到聚合数据集中 的相关文章

随机推荐

  • 防止 PHP date() 默认为 12/31/1969

    我正在使用 MySQL 数据库和 PHP 我使用以下命令将日期值存储在数据库中DATETIME field 我正在使用此 PHP 代码将输入的日期转换为适合 MySQL 的格式 date Y m d H i s strtotime inpu
  • 水平扩展的微服务实例是否应该共享数据库?

    给定一个拥有关系数据库并需要水平扩展的微服务 我看到两种配置数据库服务器的方法 为服务的每个实例提供其自己的数据库服务器实例 并具有耦合的流程生命周期 OR 让实例连接到共享 由同一服务的相同实例 独立数据库服务器或集群 使用事件驱动架构和
  • NotificationCompat.Builder 中出现 NoClassDefFound 错误

    这个概念是在特定时间收到通知 显然 我做到了 直到我添加了对低于以下版本的支持HoneyComb并在其上方 我已经设置了最小 SDK 版本 8 和目标 SDK 17 由于类编码要大得多 我仅显示存在问题的核心区域 int currentap
  • 为什么最好将 script 标签放在 body 标签的末尾?

    有两个与浏览器网页初始化相关的事件 DOMContentReady document object 解析 HTML 文档并构建 DOM 树 load window object HTML 文档的所有元素都被渲染 显示 根据我的理解 浏览器无
  • 无法找到捆绑的 Java 版本。 MacBook Air M1

    我在配备 intel 的 MacBook Pro 上使用 flutter 一切正常 现在我改用配备 M1 芯片的 MacBook Air 我收到错误无法找到捆绑的 Java 版本 请问我该如何解决它 扑动医生 v Flutter 频道稳定
  • 在 Apps 脚本中设置数据验证显示样式

    是否可以在应用程序脚本中设置下拉列表显示样式 检查文档后发现 API 只允许您在 箭头 和 纯文本 之间进行选择 应用程序脚本文档 https developers google com apps script reference spre
  • 无法以编程方式在 C:\inetpub\wwwroot 中创建文件

    我在 ASP NET 网页的代码后面有一个函数 它创建一个文件 然后使用 JavaScript 命令打开它 这在 IDE 中有效 它会创建文件 询问我要在哪里保存文件 我可以保存它 等等 但是当我安装网站并测试它时 我在尝试创建网站时收到
  • Internet Explorer 8 原型和 XMLHttpRequest

    这部分是对解决方法的请求 部分是试图表明 Internet Explorer 的原型实现仍然有缺陷 以下代码在 Internet Explorer 上不起作用 XMLHttpRequest prototype old XMLHttpRequ
  • 如何关闭 Safari 的预取功能?

    Safari 有一个 功能 可以在您输入网址时预加载页面 现在对于大多数用户来说 这确实是一个功能 可以加快页面加载速度 但对于 Web 开发人员来说 它可能会带来麻烦 特别是当它自动加载您之前使用过但当前无意运行的脚本 例如导入程序或后台
  • 根据 Celery 任务状态更新 Django 模型字段

    在我的模型中 我有一个status默认值为 处理 的字段 在 Django 管理界面中 用户单击 保存 按钮后 表单输入将传递给仅休眠 30 秒的 celery 任务 30 秒后 我该如何 判断celery任务是否成功 更新模型的statu
  • 如果浏览器不是 Internet Explorer 9 或更高版本,则显示一条消息

    我想向我的用户展示一个如下所示的栏 如果 浏览器不是IE 或者 浏览器为 IE 但版本为 8 或更早 请注意 屏幕截图仅用于说明 IE 9is支持我的网站 我发现了这个不错的 jQuery 插件 但我不想使用弹出窗口 http jrejec
  • x 轴刻度日期格式和位置

    我尝试使用 matplotlib 复制最初使用 flotr2 创建的绘图图以进行 pdf 输出 我必须说 flotr 更容易使用 但除此之外 我目前一直在尝试将 x 轴上的日期 时间格式化为所需的格式 即小时 分钟 每 2 小时间隔一次 如
  • 如何恢复 .condarc 中 env_prompt 参数的默认行为?

    如果你创建一个python环境conda with prefix标记并激活它 激活后环境将通过其整个路径显示 这可能是一条很长的路 因此conda 文档 https docs conda io projects conda en lates
  • Spark 中的任务不可序列化

    我有这样的转变 JavaRDD
  • WPF 本机 Windows 10 Toast

    使用 NET WPF和Windows 10 有没有办法使用c 将本地toast通知推送到操作中心 我只看到人们为此制作自定义对话框 但必须有一种方法可以通过 os 您可以使用NotifyIcon from System Windows Fo
  • 使用 YAML 和过滤器登录 python

    想要使用 YAML 设置带有过滤器的记录器 YAML 配置文件config yaml如下 version 1 formatters simple format asctime s name s message s extended form
  • swift 中的默认初始化器

    我创建了一个带有字符串选项 字符串 的 swift 类 并在另一个 swift 文件中实例化了该类 但出现了编译错误 当我在同一文件中实例化该类时 没有错误 我做错了什么吗 我仔细检查了该行为 并且该行为即使与 swift 文档中给出的类定
  • 无法在android中调用REST API

    我正在尝试从手机调用 REST Web 服务 我正在使用以下代码来完成此操作 我只有一项具有按钮和文本视图的活动 每当我单击按钮时 它都会出现以下错误logcat AndroidRuntime at android os Handler d
  • 当我尝试运行 Yesod 书中的第一个示例时,出现“无法找到模块‘Yesod’”

    我知道这似乎重复找不到模块 Yesod https stackoverflow com questions 14589358 could not find module yesod 但与该用户不同的是 ghc pkg list不显示Yeso
  • 根据另一列的聚合将非聚合列添加到聚合数据集中

    是否可以使用聚合函数从原始数据框中添加另一列 而不实际使用该列来聚合数据 这是一个非常简化的数据版本 将有助于说明我的问题 我们称之为数据 name result 1 result 2 replicate day data for mean