循环总结大于 R 中主题的观察结果

2023-12-08

我有一个看起来像这样的数据集

set.seed(100)
da <- data.frame(exp = c(rep("A", 4), rep("B", 4)), diam = runif(8, 10, 30))

对于数据集中的每一行,我想总结大于特定行中的直径并包含在级别“exp”中的观察值(直径)。 为此,我做了一个循环:

da$d2 <- 0
for (i in 1:length(da$exp)){
 for (j in 1:length(da$exp)){
  if (da$diam[i] < da$diam[j] & da$exp[i] == da$exp[j]){
    da$d2[i] = da$d2[i] + da$diam[j]}
}
}

循环工作正常,我得到了结果

  exp     diam       d2
1   A 16.15532 21.04645
2   A 15.15345 37.20177
3   A 21.04645  0.00000
4   A 11.12766 52.35522
5   B 19.37099 45.92347
6   B 19.67541 26.24805
7   B 26.24805  0.00000
8   B 17.40641 65.29445

然而,我的真实数据集比这个大得多(> 40000 行和 > 100 exp 级别),因此循环速度非常慢。我希望可以使用一些函数来方便计算。


如果您不需要结果中的初始顺序,您可以像这样非常有效地完成:

library(data.table)
setorder(setDT(da), exp, -diam)
da[, d2 := cumsum(diam) - diam, by = exp]

da
#   exp     diam       d2
#1:   A 21.04645  0.00000
#2:   A 16.15532 21.04645
#3:   A 15.15345 37.20177
#4:   A 11.12766 52.35522
#5:   B 26.24805  0.00000
#6:   B 19.67541 26.24805
#7:   B 19.37099 45.92347
#8:   B 17.40641 65.29445

使用 dplyr,那就是:

library(dplyr)
da %>%
  arrange(exp, desc(diam)) %>%
  group_by(exp) %>%
  mutate(d2 = cumsum(diam) - diam)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环总结大于 R 中主题的观察结果 的相关文章

随机推荐

  • MVC3 在重定向到操作时销毁会话

    我在 MVC3 应用程序中遇到会话问题 在一个控制器中 我收到一个发布请求 然后在重定向到控制器 get 方法之前将值添加到会话中 问题是 在 GET 请求中 会话值返回 null 即使在 POST 请求中设置了会话值 HttpPost p
  • 带有复选框问题的 jQuery 禁用按钮

    我有以下代码 在选中复选框时启用按钮 http jsfiddle net ERfWz 1 以下是我的 HTML 页面中的代码片段 它非常相似 但由于某种原因它不起作用 我想我可能已经看它太久了
  • SmoothState.Js 页面更改后重新初始化页面脚本

    我使用 SmoothState js 进行页面转换 它工作正常并使用 ajax 加载新页面 然而 我在每个页面上都有需要重新初始化的 JS 脚本 并且我无法让它们始终出现在页面转换中 根据常见问题解答 smoothState js 提供了
  • 如何创建一个新对象,其中键作为一个对象的值,该对象作为值?

    我的问题有点类似于this 我有一个映射 其键为 objectType1 值为 objectType1 无效的 type ObjectType1 key string value string const newMap new Map
  • 在网页中嵌入 Windows 窗体用户控件的步骤

    我正在 Visual Studio 2005 中开发一个 Windows 窗体用户控件 它是一个文件上传控件 仅使用 2 个元素 显示 openfiledialog 的按钮 打开文件对话框 我已经在 html 页面中添加了一个带有类 id
  • Hibernate EntityManager.merge() 不更新数据库

    我有一个使用 Hibernate 的 Spring MVC Web 应用程序 我的问题是em merge拨打电话后没有回复 这是我的控制器 RequestMapping value updDep method RequestMethod P
  • 从 Mysql DB 填充 JFreechart TimeSeriesCollection?

    我正在尝试在我的应用程序中制作一个图表 该图表可以返回几个月内各天的温度 该图表是 JFreechart TimeSeriesCollection 我无法让该图表从数据库读取正确的数据 它显示了一些值 但不是全部 并且不显示正确的时间 为了
  • 为什么 gc() 不释放内存?

    我在一个上运行模拟Windows 64 位计算机 with 64 GB 内存 内存使用达到55 完成模拟运行后 我通过以下方式删除工作空间中的所有对象rm list ls 后面跟着一个double gc 我认为这将为下一次模拟运行释放足够的
  • 如何使用特定网络接口(或特定源 IP 地址)进行 Ping?

    根据这个链接 使用 System Net NetworkInformation 有没有办法将 ping 绑定到特定接口 ICMP 不能绑定到网络接口 与基于套接字的东西不同 ICMP 不是基于套接字的 ping 将根据路由表发送到适当的端口
  • 列表视图滚动不平滑

    我有一个自定义列表视图 显示用户和照片 我从 API 检索数据 它提供 JSON 输出 我的问题是列表视图滚动不顺畅 它挂起一秒钟并滚动 它重复相同的操作直到我们到达末尾 我认为这可能是因为我正在 UI 线程上运行与网络相关的操作 但即使在
  • 实体框架能否在保存时自动将日期时间字段转换为 UTC?

    我正在使用 ASP NET MVC 5 编写一个应用程序 我要存储在数据库中的所有日期时间必须首先从本地时区转换为 UTC 时区 我不确定在请求周期内最好的地方在哪里 我可以在控制器中通过 ViewModel 规则后将每个字段转换为 UTC
  • JS 中的猜数字游戏

    我想创建一个数字游戏 用户输入 1 100 之间的数字 脚本将尝试猜测 10 次用户的输入 如果猜对的数字在 10 以内 则用户获胜 否则用户获胜 到目前为止 我让它正常工作 除了我在尝试让它显示游戏结束时的猜测数量时遇到问题 例如 如果进
  • 如何使用模型/视图/控制器方法制作 GUI?

    我需要理解模型 视图 控制器方法背后的概念以及如何以这种方式编写 GUI 这只是一个非常基本 简单的 GUI 有人可以向我解释如何使用 MVC 重写这段代码吗 from tkinter import class Application Fr
  • 使用 Button Jupyter Notebook 终止循环?

    我想要 从串口读取 无限循环 当按下 STOP 按钮时 gt 停止读取并绘制数据 From 如何通过按键终止 while 循环 我以使用键盘中断为例 这有效 但我想使用一个按钮 键盘中断示例 weights times open port
  • 将 ACE 与 WT 结合使用

    UPDATE 3最终工作代码如下 您需要 src 文件夹中的 ace js 它无法从库中运行 您需要从他们的站点获得预打包版本 WText editor new WText root editor gt setText function n
  • 在 Kubernetes Python 客户端中使用 create_namespaced_secret API

    我必须创建一个像这样的秘密 但是使用Python kubectl create secret generic mysecret n mynamespace from literal etcdpasswd echo n PASSWORD ba
  • 为什么我的坐标区对象的 ButtonDownFcn 回调在绘制某些内容后停止工作?

    我正在图中创建一组轴并为其分配回调 ButtonDownFcn 像这样的财产 HRaxes axes Parent Figure Position 05 60 9 35 XLimMode manual ButtonDownFcn HR Bu
  • 在 unicode 中填充“o”字符或通过 CSS 模仿

    我需要用 HTML 编写此文本 我尝试使用一些 unicode 字符 例如Unicode字符集 黑圈 U 25CF or Unicode字符集 黑色大圆圈 U 2B24 但它们需要一些样式 即尺寸与实际尺寸不同 o 并且在某些系统和字体上显
  • 如何更改 stackplot、matplotlib 的调色板?

    我希望更改 stackplot 的调色板 使大区域具有浅色 较小区域具有明亮颜色 import numpy as np import pandas as pd import matplotlib pyplot as plt import s
  • 循环总结大于 R 中主题的观察结果

    我有一个看起来像这样的数据集 set seed 100 da lt data frame exp c rep A 4 rep B 4 diam runif 8 10 30 对于数据集中的每一行 我想总结大于特定行中的直径并包含在级别 exp