为 R 中具有相同符号的连续数字的每个范围分配一个值

2023-12-31

我正在尝试创建一个数据框,其中存在一列,该列保存表示正数和负数的运行长度的值,如下所示:

Time  V  Length
0.5  -2  1.5
1.0  -1  1.5
1.5   0  0.0
2.0   2  1.0
2.5   0  0.0
3.0   1  1.75
3.5   2  1.75
4.0   1  1.75
4.5  -1  0.75
5.0  -3  0.75

The Length列汇总该值为正值或负值的时间长度。零点被赋予0因为它们是一个拐点。如果没有零分隔符号变化,则对拐点两侧的值进行平均。

我试图估算这些值花费正数或负数的时间。我已经尝试过这个for循环取得了不同程度的成功,但我想避免循环,因为我正在处理非常大的数据集。

我花了一些时间看sign and diff因为它们被用于这个关于符号变化的问题 https://stackoverflow.com/questions/10033696/r-identifying-a-row-prior-to-a-change-in-sign/10033781#10033781。我也看过这个问题 https://stackoverflow.com/questions/32308636/r-how-to-sum-values-from-rows-only-if-the-key-value-is-the-same-and-also-if-the使用transform and aggregate对连续的重复值求和。我觉得我可以将它与sign and/or diff,但我不确定如何将这些总和追溯分配给创建它们的范围,或者如何处理在拐点上取平均值的点。

任何建议,将不胜感激。这是示例数据集:

dat <- data.frame(Time = seq(0.5, 5, 0.5), V = c(-2, -1, 0, 2, 0, 1, 2, 1, -1, -3))

首先找到需要插值的“Time”索引:正值和负值之间缺少零的连续“V”;他们有一个abs(diff(sign(V))等于二。

id <- which(abs(c(0, diff(sign(dat$V)))) == 2)

将相关索引之间的平均“时间”和相应的“V”值为零的行添加到原始数据中。还要在“Time”= 0 处和最后一个时间步添加“V”= 0 行(根据@Gregor 提到的假设)。按“时间”排序。

d2 <- rbind(dat,
            data.frame(Time = (dat$Time[id] + dat$Time[id - 1])/2, V = 0),
            data.frame(Time = c(0, max(dat$Time)), V = c(0, 0))
            )
d2 <- d2[order(d2$Time), ]

计算为零的时间步之间的时间差,并使用“零组索引”复制它们。

d2$Length <- diff(d2$Time[d2$V == 0])[cumsum(d2$V == 0)]

将值添加到原始数据:

merge(dat, d2)

#    Time  V Length
# 1   0.5 -2   1.50
# 2   1.0 -1   1.50
# 3   1.5  0   1.00
# 4   2.0  2   1.00
# 5   2.5  0   1.75
# 6   3.0  1   1.75
# 7   3.5  2   1.75
# 8   4.0  1   1.75
# 9   4.5 -1   0.75
# 10  5.0 -3   0.75

将“长度”设置为0 where V == 0.

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

为 R 中具有相同符号的连续数字的每个范围分配一个值 的相关文章

随机推荐

  • “应用程序包的顶层”在哪里?在 XCode 中

    我试图将 Default png 图像放入我的 iPhone 应用程序中 但无法弄清楚 应用程序包的顶层 在 XCode 窗口中的位置 在压缩发布之前 您是否不将其添加到 Xcode 中 而是添加到构建文件中 只需将其添加到您的项目中即可
  • 在 Unity 中注册类型时如何传入构造函数参数?

    我在 Unity 中注册了以下类型 container RegisterType
  • 使用 mod_wsgi 记录烧瓶错误

    很长一段时间以来我一直在努力让它发挥作用 但现在我真的束手无策 我已经尝试做我可以在 SO 和 Flask 文档中找到的所有内容 但仍然无法使用简单的错误日志来调试我的应用程序 下面是粘贴的代码 main py from flask imp
  • Powershell - “表达式只允许作为管道的第一个元素”

    在以下情况下如何避免此错误 codegenDir Z Desktop Song Renamer PowerShellRepresentation dir path MyMusicFolder recurse include mp3 m4a
  • CSS 停止图像下的文本换行

    我有以下标记 li img class fav star src images fav png span Text text and more text span li 我希望这样 如果文本换行 它就不会进入图像的 列 我知道我可以用tab
  • 清除网络浏览器控件中的选择

    我有一个带有网络浏览器控件的表单 我将所有文本 不是 html 数据复制到剪贴板 为此 代码片段是 webBrowser2 Document ExecCommand SelectAll false null webBrowser2 Docu
  • 仅数学证明助理

    大多数证明助手都是具有依赖类型的函数式编程语言 他们可以证明程序 算法 相反 我感兴趣的是最适合数学且仅适合数学 例如微积分 的证明助手 你能推荐一个吗 我听说过 Mizar 但我不喜欢源代码被关闭 但如果它最适合数学 我会使用它 Agda
  • 如何在具有硬编码凭据的 Android 项目中使用 Google Drive SDK

    如何将凭据硬编码到我的 Google Drive 服务 以便应用程序的用户始终无需身份验证即可访问我的文件 我找到了使用 Java SKD 的解决方案 但这些库不能很好地与 Android 配合使用 https developers goo
  • 我应该使用`!Is Good`还是`Is Good == false`?

    我不断看到代码进行这样的检查 if IsGood false DoSomething or this if IsGood true DoSomething 我讨厌这种语法 并且总是使用以下语法 if IsGood DoSomething o
  • 在kivy中设置全局字体大小

    无论是通过 python 还是 kivy 语言 在 kivy 中设置全局字体大小 即按钮和标签 的首选方法是什么 根据窗口大小按比例动态更改全局字体大小设置的好方法是什么
  • “在此上下文中开始第二个操作” EF core 3.1 并发性重大更改 [重复]

    这个问题已经存在了 我正在从 netcoreapp 2 1 迁移到 3 1 并且发现了 EF core 3 1 的重大更改 但我无法解决 以下内容在 2 1 中有效 因此简单地说数据库上下文在设计上不是线程安全的 并指出其他不涉及此细微差别
  • git中p4merge合并工具出错

    我已经为 p4merge 设置了类路径并设置了文件 gitconfig 但是当 p4merge 工具假设要打开这两个冲突的文件时 我收到此错误 有人知道解决方案吗 添加到类路径 C Program Files Perforce p4merg
  • Delphi 中的类/静态常量

    在 Delphi 中 我希望能够创建一个与类关联的私有对象 并从该类的所有实例访问它 在Java中 我会使用 public class MyObject private static final MySharedObject myShare
  • 在 xaml 窗口和用户控件 WPF 之间传递参数

    如何将参数从 xaml 窗口传递到 WPF 用户控件构造函数 我尝试过创建依赖属性 但失败了 我应该尝试 xaml 扩展还是有其他方法可以做到这一点
  • 使用opencv检测肤色

    如何检测皮肤的颜色使用OpenCV 使用 OpenCV 怎么样 哈尔人脸检测器找到一个面部区域 然后得到平均或最常见的颜色在那个脸部区域 既然应该是肤色 Update 环境 我的镜框将具有面部特征 仅限从头发到肩膀 如附件所示 你真的不需要
  • 片段选项卡和片段活动

    我按照指南使用 Fragments 创建了一个应用程序 以便我可以在更大的屏幕上显示更详细的视图 不过 我也想使用选项卡进行导航 根据指南 选项卡也应该是片段 而不是已弃用的 TabHost 一些谷歌搜索表明你不能 不应该嵌套片段 我的问题
  • 在 Java 中解析日期格式

    我正在尝试用 Java 将日期转换为 Unix 时间戳 我的日期示例为 Fri Jun 05 15 53 07 PDT 2009 我的代码是 DateFormat dateFormat new SimpleDateFormat EEE MM
  • 忽略 R 字符串中的转义字符(反斜杠)

    在 SPSS 中运行 R 插件时 我收到一个 Windows 路径字符串作为输入 例如 C Users mhermans somefile csv 我想在后续的 R 代码中使用该路径 但是需要用正斜杠替换斜杠 否则 R 将其解释为转义符 例
  • 如何在 R 中为 tableGrob 自定义特定列?

    我正在寻找自定义 tableGrob 中的特定列 对于这个可重现的示例 我选择查看自定义理由 假设您有以下数据框 df lt data frame Order c 1 3 Name c Adam Ben Charlie Score c 4
  • 为 R 中具有相同符号的连续数字的每个范围分配一个值

    我正在尝试创建一个数据框 其中存在一列 该列保存表示正数和负数的运行长度的值 如下所示 Time V Length 0 5 2 1 5 1 0 1 1 5 1 5 0 0 0 2 0 2 1 0 2 5 0 0 0 3 0 1 1 75 3