删除特定值之前和之后的特定值的运行

2024-04-30

我有一个包含几列的数据框。基于“activity”列,我想删除特定值“pt”的整个连续运行,但前提是它们紧邻“outside”运行之前或之后发生。

在下面的简化数据中,有一次运行的“activity”为“outside”,并且前后都有大块“pt”。这两个“pt”块应该被删除。

   activity dist
1      home    1
2        pt    2 # <- run of 'pt' before run of 'outside': remove
3        pt    3 # <-
4        pt    4 # <- 
5   outside    5
6   outside    6
7        pt    7 # <- run of 'pt' after run of 'outside': remove
8        pt    8 # <-
9      work    9
10       pt   10
11       pt   11
12     home   12

因此,期望的输出是:

    activity dist 
 1      home    1 
 2   outside    5 
 3   outside    6 
 4      work    9 
 5        pt   10 
 6        pt   11 
 7      home   12 

如何才能实现这一目标?


dput数据的:

structure(list(activity = c("home", "pt", "pt", "pt", "outside", "outside", "pt", "pt", "work", "pt", "pt", "home"),
              dist = 1:12),
          class = "data.frame", row.names = c(NA, -12L))

您可以使用以下的一些便利功能data.table包裹:rleid到“[生成游程类型组 ID”,以及shift获取向量中焦点索引之前和之后的值。

library(data.table)
setDT(d)
d[ , r := rleid(activity)]

d[!(r %in% r[activity == "pt" & shift(activity, type = "lead") == "outside" |
               shift(activity) == "outside" & activity == "pt"])]

#    activity dist r
# 1:     home    1 1
# 2:  outside    5 3
# 3:  outside    6 3
# 4:     work    9 5
# 5:       pt   10 6
# 6:       pt   11 6
# 7:     home   12 7

解释:

强迫你的data.frame to a data.table (setDT(d))。创建“活动”的游程长度索引(rleid)。检查当前值是否为“pt”且下一个值是否为“outside”(activity == "pt" & shift(activity, type = "lead") == "outside"), or (|) 如果当前值为 'pt' 并且先前值为 'outside' (activity == "pt" & shift(activity) == "outside").

这个条件在哪里TRUE,抓取要删除的运行组(r[<condition>])。检查运行是否在要删除的组中(r %in% <run groups to be removed>)。如果是这样,请勿(!)在索引数据时保留这些行(d[<condition>])


base替代使用rle.

“outside”之前或之后的“pt”运行值替换为NA。 rle 被转换回向量 (inverse.rle)和行NA被删除(na.omit).

显然,如果有行NA在要保留的原始数据集中,需要使用另一个值进行替换。

with(rle(d$activity),
     values[c(which(head(values, -1) == "pt" & tail(values, -1) == "outside"),
              which(head(values, -1) == "outside" & tail(values, -1) == "pt") + 1)]) <- NA

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

删除特定值之前和之后的特定值的运行 的相关文章

  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 在 R 中创建虚拟变量,排除某些情况为 NA

    我的数据看起来像这样 V1 V2 A 0 B 1 C 2 D 3 E 4 F 5 G 9 我想创建一个虚拟变量R where 0 1 1 2 3 4 and NA 0 5 9 应该很简单 有人可以帮忙吗 我们可以转换V2 into a fa
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何从 R 中的 txt 文件读取矩阵?

    我有一个带有矩阵的txt文件 Matrix txt 重要 数字之间没有空格 0100 1001 1100 我想在 R 中将其作为矩阵读取 我该怎么做 我尝试使用 as matrix read table Matrix txt sep 但失败
  • R:如何获取该月的周数

    我是 R 新手 我想要该日期所属月份的周数 通过使用以下代码 gt CurrentDate lt Sys Date gt Week Number lt format CurrentDate format U gt Week Number 3
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • 实三次多项式的最快数值解?

    R 问题 寻找最快的方法来数值求解一堆已知具有实系数和三个实根的任意三次方程 据报道 R 中的 polyroot 函数对复杂多项式使用 Jenkins Traub 算法 419 但对于实多项式 作者参考了他们早期的工作 对于实三次或更一般的
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • 使用 location.href 或 window.location.reload(true) 重新加载页面

    我需要在 ajax 调用成功后重新加载页面 我看到一些代码 不是我的 有两种方法 success function obj code location href location href or success function obj c
  • Ember 不更新模型更改的视图

    该小提琴重新创建了入门套件 并带有可更改模型的额外按钮 http jsfiddle net UjacC 1 http jsfiddle net UjacC 1 但是 当单击 更改 时 数组会更改 但视图不会更新 为什么
  • 使用 FileOutputStream 创建 UTF-8 PDF 文件

    我正在使用 JasperReports 和 DynamicReports 以及这段 java 代码来创建包含 utf 8 字符的 pdf 格式的报告 问题是生成的 pdf 文件根本不包含 utf 8 字符 就像它们已被替换为 使用 Outp
  • WPF DatePicker 显示时间和日期

    我有一个DatePicker对象在一个DataGrid成功显示数据库或属性中的日期
  • 如何在 Pandas 的时间序列图上绘制垂直线?

    如何绘制垂直线 vlines 在熊猫系列情节中 我正在使用 Pandas 绘制滚动平均值等 并且想用垂直线标记重要位置 是否可以使用vlines或类似的东西来完成这个 在这种情况下 x 轴是datetime plt axvline x po
  • 为什么我收到错误 #1136 - 列计数与第 1 行的值计数不匹配?

    我收到此错误 1136 Column count doesn t match value count at row 1 当我尝试这样做时 INSERT INTO folding cartons part no description cou
  • 使用 ActiveResource 将 CamelCase xml/json 转换为 ruby​​ 命名属性

    我正在使用 ActiveResource 来使用 REST 服务 该服务的 xml 如下所示
  • 自定义 UIImageView 不是自定义 UITableViewCell 内的圆圈

    我在代码中完成了自定义 UITableViewCell 但我在使用内部带有 SfSymbol 的圆形 UIImageView 时遇到了麻烦 有时它运行良好 正如您在屏幕截图中看到的那样 但有时它的形状有些奇怪 如果我不设置任何 SfSymb
  • webpack - require('node_modules/leaflet/leaflet.css')

    所以我正在尝试使用构建一个地图应用程序webpack and leaflet 我可以要求leaflet js从我的map js文件 但我无法在不出现错误的情况下调用 leaflet css 我现在的webpack config js好像 u
  • Doctrine2 / Symfony2 - 同一张表上的多个实体

    在 Symfony2 应用程序中我有一个主包以及可以启用或不启用的不同捆绑包 在里面主包我需要有Model和一个基本的Entity In an 其他捆绑包 an Entity具有相同的表名Entity in 主包 MainBundle 中的
  • iOS 指定初始化器:使用 NS_DESIGNATED_INITIALIZER

    我们在 XCode 6 中引入了这个新宏 NS DESIGNATED INITIALIZER 我在网上搜索 但找不到任何关于如何使用它的好的文档 从语法上来说 我们可以这样使用它 instancetype initWithCoder NSC
  • “[B”是什么样的 Java 类型?

    我正在尝试通过 Java 代码 Hibernate 从 MySQL DB 获取 MD5 加密密码 但我既得不到 Strong 也得不到任何合理的 Java 类型 我唯一收到的是这条无用的消息 java lang ClassCastExcep
  • Firefox 和 JavaScript 重定向

    我目前在使用 Firefox 时遇到问题 所有其他浏览器都以正确的方式运行 甚至 IE6 我想要做的是重定向到子页面但留下历史记录条目 据我所知 有两种重写url的方法 window location some url 重定向到带有历史记录
  • 如何在 Flask 之外使用 jinja2 及其 i18n 扩展(使用 babel)

    如何在 Flask 应用程序之外将 jinja2 与 babel 一起使用 假设我有使用 pybabel 命令填充的语言环境目录 我想加载翻译文件并翻译我的模板文件 我找到了解决方案 以下是如何在不集成 Flask 的情况下使用 jinja
  • GDI+ 性能技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何仅将填充应用于 Flutter 中 TextField 中的文本?

    没有填充我得到这个结果 有了这样的东西 Padding padding EdgeInsets all 20 0 child TextField 我得到以下结果 可能有点难以看清 但您只需看看边缘的红色徽章即可明白我的意思 我只想用填充来移动
  • PHP 中字符串限制为前 5 个单词或前 42 个字符

    如果我在 PHP 中有一个字符串 该字符串在 PHP 中是令人讨厌的长字符串 并且我想缩短它 然后向其添加一些内容 我想将其缩短为前 6 个单词或 42 个字符 以较短者为准 然后在缩短后附加一个 唯一不会被缩短且不添加 的情况是它最初少于
  • Java 中客户端/服务器传输的压缩字符串

    我使用专有的客户端 服务器消息格式来限制我可以通过网络发送的内容 我无法发送序列化对象 我必须将消息中的数据存储为字符串 我发送的数据是大的逗号分隔值 我想在将数据作为字符串打包到消息中之前对其进行压缩 我尝试使用 Deflater Inf
  • 画笔到画笔动画

    我设法找到了如何制作 WPF 动画 两种颜色之间的过渡 它被称为 ColorAnimation 并且效果很好 ColorAnimation animation new ColorAnimation From Colors DarkGreen
  • 删除特定值之前和之后的特定值的运行

    我有一个包含几列的数据框 基于 activity 列 我想删除特定值 pt 的整个连续运行 但前提是它们紧邻 outside 运行之前或之后发生 在下面的简化数据中 有一次运行的 activity 为 outside 并且前后都有大块 pt