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

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

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

  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • HTTR GET 新错误:SSL 证书问题:证书已过期

    我已经运行这段代码几个月了 没有出现任何问题 今天我突然开始在我的两台 AWS 服务器上收到以下错误消息 错误 curl curl fetch memory url handle handle SSL证书问题 证书已过期 当尝试运行以下代码
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 如何将 UDF 中的结构或类数组返回到数据帧列值中?

    d ID 1 pID 1000 startTime 2018 07 02T03 34 20 endTime 2018 07 03T02 40 20 ID 1 pID 1000 startTime 2018 07 02T03 45 20 en
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 如何修复日期过滤器 VBA,因为它没有拾取我范围内的所有日期

    我正在尝试创建一个过滤器来过滤掉我选择的日期内的所有日期 我选择的日期将始终反映整个月 例如 如果我需要 2019 年 5 月的数据 我将输入开始日期为 01 05 2019 结束日期为 31 05 2019 我的数据过滤器将需要选取经过我
  • R 中图周围的圆形边框

    我需要在情节周围放置平滑的边框 代码 plot 0 10 0 10 type n xlab X ylab Y box figure col blue 除了简单的蓝线 我如何放置带有圆角的平滑灰线 非常感谢 library grid plot
  • 使用操作按钮在闪亮的 R 中添加包含现有数据框的新行

    我正在构建一个闪亮的表单 它将从 textInput 字段获取数据 并将这些输入与文本文件 将通过文件输入上传 组合起来 并在主面板中显示输出 有一个操作按钮用于第一次更新数据 从文本输入中获取数据并与处理后的文本文件合并 我添加了另一个操
  • 将文件名附加到 R 中的数据框

    我想将文件名附加到我的表中 但它似乎并没有真正起作用 我正在做的是迭代文件名列表 打开它们 将所有数据附加到一个数据帧 对于每个附加文件 我想添加其文件名 我希望将其附加到每一行 以便稍后当我查看数据时 我会知道给定行源自哪个文件 但似乎并
  • rPlot 工具提示问题

    我有一个使用 rCharts 工具提示的简单示例 但似乎不起作用 set seed 1 test lt data frame x rnorm 100 y rnorm 100 rPlot y x data test type point to
  • 使用行内 r 代码作为 R markdown 标头的一部分

    我希望使用行 R 代码作为 r markdown 文件中标头的一部分 然而 当我编织文件时 标题上使用的字体是不同的 如何确保字体相同 下面是一个简单的例子 r 1 1 Header 您可以将内容括在反引号中以表示内联 r 代码 如下所示
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 聚合函数在数据框中创建不需要的向量

    我在函数中创建数据帧时遇到了一个奇怪的问题 但是 在 data frame 之外使用相同的方法效果很好 这是基本函数 我用它来计算数据集的平均值 标准差和标准误差 aggregateX lt function formula dataset
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 使用括号表示 y 轴上的负值 ggplot2

    我想在括号中显示 y 轴负值 而不是用负号 例如 我想显示 2 000 而不是 2 000 我在 R 中使用 ggplot2 我尝试在scale y continuous内部使用 negative parens TRUE 如下所示 但没有成
  • 如何根据第一列创建新列,同时考虑Python Pandas中字母和列表的大小? [复制]

    这个问题在这里已经有答案了 我在 Python Pandas 中有 DataFrame 如下所示 col1 John Simon prd agc Ann White BeN and Ann bad list Ben Wayne 我需要这样做
  • ggplot2 的 fortify 函数出错

    我在 ggplot2 中使用 fortify 方法时收到此错误 Error in function classes fdef mtable unable to find an inherited method for function pr
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法

随机推荐

  • 使用 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