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

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(使用前将#替换为@)

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

  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • LaTex 中与 knit 和 xtable 交叉引用的问题

    我目前正在与 R Studio 合作 使用 LaTex 中的 R knitr 生成 PDF 文档 在这些文档中 我想在文本中引用的表格中展示我的部分结果 我使用 R 中的 xtable 包生成这些表 它运行良好并为我提供了正确的表 到目前为
  • 如何获得 STAN 中最大似然估计的标准误差?

    我在 Stan 中使用最大似然优化 但不幸的是optimizing 函数不报告标准错误 gt MLb4c lt optimizing get stanmodel fitb4c data win data init inits STAN OP
  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • 替换列表列表中的元素

    The applyR 中的函数是简化 for 循环以获得输出的好方法 是否有一个等效的函数可以帮助人们在替换向量的值时避免 for 循环 通过示例可以更好地理解这一点 Take this list for example x list li
  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • 基于另一个数据集获取数据集的子集

    假设我有一个数据集 即 dat1 ID block plot SPID TotHeight 1 1 1 4 44 5 2 1 1 4 51 3 1 1 4 28 7 4 1 1 4 24 5 5 1 1 4 27 3 6 1 1 4 20
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 在 R 中创建一个运行计数变量?

    我有一个足球比赛结果的数据集 我希望通过创建一组类似于世界足球 Elo 公式的运行评级来学习 R 我遇到了麻烦 在 Excel 中看似简单的事情在 R 中并不完全直观 例如 4270 个观察中的前 15 个具有必要的变量 date t 1
  • 如何删除箱线图上的刻度线

    我试图从箱线图中删除 x 轴刻度线 但保留与刻度线关联的标签 这在基础 R 中可能吗 colors lt c lightskyblue3 gray78 gold1 wheat1 boxplot avgscore module data mi
  • 在 R 中向散点图添加线条

    如何向图表添加线条 我做了以下 dat lt data frame xvar 1 20 rnorm 20 sd 10 yvar 1 20 rnorm 20 sd 10 zvar 1 20 rnorm 20 sd 10 plot dat 1
  • 使用 purrr 迭代替换数据帧列中的字符串

    我想用purrr使用以下命令在数据框列上迭代运行多个字符串替换gsub 功能 这是示例数据框 df lt data frame Year 2019 Text c rep a aa 5 rep a bb 3 rep a cc 2 gt df
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use

随机推荐

  • 防止 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