按连接值对 R 数据帧进行分组

2023-11-22

我没有找到 R 中这个常见分组问题的解决方案:

这是我的原始数据集

ID  State
1   A
2   A
3   B
4   B
5   B
6   A
7   A
8   A
9   C
10  C

这应该是我分组的结果数据集

State   min(ID) max(ID)
A       1       2
B       3       5
A       6       8
C       9       10

因此,我们的想法是首先按 ID 列(或时间戳列)对数据集进行排序。然后,所有没有间隙的连接状态应分组在一起,并返回最小和最大 ID 值。它与 rle 方法相关,但这不允许计算组的最小值、最大值。

有任何想法吗?


你可以尝试:

library(dplyr)
df %>%
  mutate(rleid = cumsum(State != lag(State, default = ""))) %>%
  group_by(rleid) %>%
  summarise(State = first(State), min = min(ID), max = max(ID)) %>%
  select(-rleid)

或者正如 @alistaire 在评论中提到的,你实际上可以在内部进行变异group_by()使用相同的语法,结合前两个步骤。偷窃data.table::rleid()并使用summarise_all()简化:

df %>% 
  group_by(State, rleid = data.table::rleid(State)) %>% 
  summarise_all(funs(min, max)) %>% 
  select(-rleid)

这使:

## A tibble: 4 × 3
#   State   min   max
#  <fctr> <int> <int>
#1      A     1     2
#2      B     3     5
#3      A     6     8
#4      C     9    10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按连接值对 R 数据帧进行分组 的相关文章

  • 如何根据另一列的条件语句将因子列添加到数据框?

    我有一个数据框 我需要根据条件语句添加一个因子列 这里是data https www dropbox com s hujiacus8ek5o5z MoroccoCGE CC Stats csv Code morstats agri f lt
  • 安装 R 包。包含目录为空。开发标头

    我目前正在尝试运行一些最初在 2 11 0 下运行的 R 代码 我使用的 R 版本 2 14 1 无法运行该代码 我不熟悉 R 及其向后兼容性 据我所知 我的问题可能与版本无关 我会很高兴得知这是我做错的事情 其余的代码是无关紧要的 即使我
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 如何扩展 ggplot y 轴限制以包含最大值

    通常 在图中 Y 轴值标签会在绘制的最大值下方被截断 For example library tidyverse mtcars gt ggplot aes x mpg y hp geom point 我知道scale y continous
  • 确定列的累积最大值

    我正在尝试以下代码 df pd DataFrame 23 52 36 49 52 61 75 82 97 12 columns A B df C np where df A gt df C shift df A df C shift pri
  • data.table 相当于 dplyr::filter_at

    考虑数据 library data table library magrittr vec1 lt c Iron Copper vec2 lt c Defective Passed Error set seed 123 a1 lt sampl
  • Dataframe unstack 性能 - pandas

    我正在尝试拆开数据框 它工作正常 但问题是我正在处理 CSV 文件中的巨大数据集 约 10 亿 这是示例数据集 236539 48512569874 Name Danny 236539 48512569874 Class 12 236539
  • 使用 rvest 进行抓取 - 当标签不存在时,使用 NA 完成抓取

    我想解析这个 HTML 并从中获取这个元素 a p标签 与class normal encontrado b div with class price 有时 p某些产品中不存在标签 如果是这种情况 NA应添加到从该节点收集文本的向量中 这个
  • 写入抓取数据的 csv 文件时如何拆分项目名称

    我有兴趣使用 R 从网上抓取的数据创建 csv 或类似的 Excel 兼容文件 到目前为止 我通过执行以下操作来存储数据 require textreadr spiegel lt read html http www spiegel de
  • 将日期(系列)列从一个 DataFrame 添加到其他 Pandas,Python

    我正在尝试将日期列从 df1 广播 到 df2 在 df1 中 我有所有用户的姓名及其基本信息 在 df2 中 我有一个用户购买的列表 df1 和 df2 代码 https i stack imgur com sN0uJ png 假设我有一
  • 连接路径的函数?

    是否有现有的函数来连接路径 我知道实施起来并不困难 但仍然 除了照顾尾随 or 我需要注意正确的操作系统路径格式检测 即我们是否编写C dir file or dir file 正如我所说 我相信我知道如何实施它 问题是 我应该这样做吗 现
  • pyspark:聚合列中最常见的值

    aggregrated table df input groupBy city income bracket agg count suburb alias suburb sum population alias population sum
  • ggplot2中的两列分组

    是否可以按两列分组 于是叉积就画出来了 经过geom point and geom smooth 例如 frame lt data frame series lt rep c a b 6 sample lt rep c glass wate
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 当前一个值也在 apply 中计算时,Pandas 有没有办法使用 dataframe.apply 中的前一行值?

    我有以下数据框 Index Date A B C D 2015 01 31 10 10 Nan 10 2015 02 01 2 3 Nan 22 2015 02 02 10 60 Nan 280 2015 02 03 10 100 Nan
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • 有没有一种明智的方法可以在 R 中执行诸如文档字符串之类的操作?

    这不仅仅是一个编码风格问题 如果您了解 python 我认为 Ruby 也有类似的东西 您可以在函数中拥有文档字符串 这样您就可以通过发出 help 命令轻松获取该字符串 例如 def something t None Do somethi
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157

随机推荐

  • Android:在画布上绘制视图

    我有一个膨胀的视图 我可以将其绘制在画布上 但似乎无法正确定位它 LayoutInflater li LayoutInflater context getSystemService Context LAYOUT INFLATER SERVI
  • 如何保护自己免受Python中垂直字符串列表中缺少逗号的影响?

    在 python 中 垂直方向的字符串列表很常见 例如 subprocess check output application first flag second flag some additional flag 这看起来不错 可读 不违
  • “git add”和“git update-index”有什么区别

    git add 和 git update index 有什么区别 在什么情况下我会使用这些命令之一或另一个 基本上 update index is a plumbing命令 这意味着 低级 git add内部使用update index 我
  • size_t 的值无效

    人们用什么来表示 size t 无效 1 不起作用 0 可以是有效大小 Perhaps size t 1 严格来说 它is有效的尺寸 但一旦有了这个 您就不太可能需要任何其他的
  • Java 中带有属性的枚举

    每种颜色都有自己的静态属性 数字 我希望能够用一种方法来改变这个值 我可以使用枚举来做到这一点吗 像这样或者也许不同 public enum Color RED ORANGE YELLOW Color RED setValue x Colo
  • 删除 Excel 单元格中的换行符、回车符和所有前导空格

    我不知道发生了什么 但我的单元格中包含似乎是回车的东西 我努力了TRIM CLEAN SUBSTITUTE A1 CHAR 10 以及一些用于删除这些字符的宏 删除这些字符的唯一方法是使单元格处于活动状态 单击最后一个字符附近的删除 然后单
  • React Native + Redux Form - 使用键盘下一个按钮转到下一个 TextInput 字段

    我在用着回归形式 RF 在 React Native 应用程序中 一切正常 但我不知道如何获得refs来自Field输入以使用 Redux Form 转到下一个输入字段 不带射频this解决方案会很好地工作 这是我的代码 class Ren
  • 无法通过套接字“/var/mysql/mysql.sock”连接到本地 MySQL 服务器 (38)

    我在尝试连接 mysql 时遇到了一个大问题 当我跑步时 usr local mysql bin mysql start 我有以下错误 Can t connect to local MySQL server through socket v
  • 如何获取频率然后将其作为变量添加到数组中?

    假设我有一个这种格式的数组 X Y Z A 1 0 A 2 1 B 1 1 B 2 1 B 1 0 我想找到给定X的X的频率和Y的频率 然后将它们添加到数组中 X Y Z F x F Y X A 1 0 2 1 A 2 1 2 1 B 1
  • 包含 Visual Studio 测试运行程序集的目录无效

    我们已将 TFS 安装从 2012 年升级到 2013 年 运行我们的构建时 如果启用单元测试 它们将失败并出现以下错误 TF900547 The directory containing the assemblies for the Vi
  • “ref”使用的实用示例[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在努力如何在实际应用程序中使用 ref 通过引用传递参数 我想要一个简单且主要有意义的例子 到目前为止 我发现的所有内容都可以通过向方法添加返回类型来轻松重做 有人知道吗 谢
  • Ruby Gemspec 中的条件依赖

    我正在构建一个 gem 需要安装 json gem 才能正常工作 哪种 json gem 并不重要 json pure json jruby 或基于 C 的 json 有没有在 gemspec 中定义这个的好方法 这个回应建议为每个版本维护
  • PhantomJS - 上传文件而不提交表单

    是否可以使用 PhantomJS 将文件上传到某个页面而无需手动提交表单 我认为使用内容类型 multipart form data 是可能的 上的例子https github com ariya phantomjs blob master
  • 访问 dplyr 中的分组数据

    从 dplyr 应用 group by 函数并使用 运算符后 如何访问分组数据 例如 如果我想要每个分组数据的第一行 那么我可以使用 plyr 包来执行此操作 ddply iris Species function df df 1 outp
  • Flask 会话如何工作?

    我很好奇 Flask 会话是如何工作的 特别是它如何在服务器重新启动之间存储信息 如果我错了 请引用我的话 我知道你必须设置一个独特的app secret key因此人们无法以任何方式解密会话并修改 cookie 因为会话的 cookie
  • 将数组中的空值替换为零值

    我有一个数组 我需要删除空值并将其替换为零 我已经取得了这么多成就 当我检查数组长度为 8 但它只显示 2 个元素时 用零替换它的最佳方法是什么 var a a 3 5 a 5 15 console log a length 6 conso
  • 获取相关实体 ASP.NET WebApi OData v4 导致“未找到与请求 URI 匹配的 HTTP 资源”

    我跟着Mike Wasson 的这个 ASP NET 教程 并设法很好地设置了相关实体 但是当我将此逻辑应用于我的项目时 更复杂的实体关系 因为实体关系更多 这是唯一的区别 在 OData 调用中不会成功 我收到带有此有效负载的 404 e
  • 找不到模块 FBSDKCoreKit Cocoapods

    我正在尝试使用 CocoaPods 使用 use frameworks 将 facebook 集成到我的应用程序中 标签 并根据 Facebook 的此处说明 还包括吊舱螺栓 当我尝试使用时import FBSDKCoreKit在我的 ap
  • 代理与自然/业务密钥[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 又来了 老争论依然出现 我们是否最好将业务键作为主键 或者我们宁愿使用对业务键字段具有唯一约束的代理 ID 即 SQL Server 标识 请提供例子或证据来支持你的理论 使用代理键的几个
  • 按连接值对 R 数据帧进行分组

    我没有找到 R 中这个常见分组问题的解决方案 这是我的原始数据集 ID State 1 A 2 A 3 B 4 B 5 B 6 A 7 A 8 A 9 C 10 C 这应该是我分组的结果数据集 State min ID max ID A 1