如何在 R 中对交集/组索引的结果重新编号?

2024-04-08

我在 R 中对交集/组索引的重新编号结果苦苦挣扎了几天。示例数据框如下所示:

t <- data.frame(mid=c(102,102,102,102,102,102,102,103,103,103,103,103,103,103),
                    aid=c(10201,10202,10203,10204,10205,10206,10207,
                          10301,10302,10303,10304,10305,10306,10307),
                    dummy=c(0,1,0,1,0,1,0,0,1,0,1,0,1,0),
                    location=c(0,2,0,4,0,1,0,0,2,0,2,0,3,0)
                    )

我需要将“location”字段中存储的数字更新为一组“mid”的连续编号,而不更改其由“aid”定义的顺序。 “mid”是个人(人)的标识符,“aid”代表他们一天内的连续活动日志。 “location”标识每个“mid”访问的位置的唯一ID。因此,第9行的位置“2”和第11行的位置“2”是同一个位置,mid=102;然而,第二行中的相同数字并不意味着 mid=103 对于 mid=102 访问过相同的地方。

数据框“t”列出如下:

   mid   aid dummy location
1  102 10201     0        0
2  102 10202     1        2
3  102 10203     0        0
4  102 10204     1        4
5  102 10205     0        0
6  102 10206     1        1
7  102 10207     0        0
8  103 10301     0        0
9  103 10302     1        2
10 103 10303     0        0
11 103 10304     1        2
12 103 10305     0        0
13 103 10306     1        3
14 103 10307     0        0

基于上述想法,“位置”字段中存储的号码应更新如下:

   mid   aid dummy location
1  102 10201     0        0
2  102 10202     1        1
3  102 10203     0        0
4  102 10204     1        2
5  102 10205     0        0
6  102 10206     1        3
7  102 10207     0        0
8  103 10301     0        0
9  103 10302     1        1
10 103 10303     0        0
11 103 10304     1        1
12 103 10305     0        0
13 103 10306     1        2
14 103 10307     0        0

条件是:

  • “dummy=0”的位置编号应保留为 0
  • 每个“mid”的位置编号应从 1 开始
  • 如果他/她访问的位置与前几行中他/她访问的位置不同,则在新位置上加 1
  • 该操作应在 tidyverse 提供的管道进程中执行

初始数据帧是使用 group_indices 或 base::intersection 从 tidyverse 中的管道函数获得的;然而,这些函数有时会返回无序的结果。

对于这个问题有什么解决方案吗?

我找到了一个解决方案这个链接 https://community.rstudio.com/t/why-does-group-indices-use-alphabetical-ordering/5452/4 using {数据.表}但我更喜欢使用 tidyrverse 来保持管道操作。 有很多例子可以给出相同的数字R但我找不到任何解决方案来按顺序对这些 ID 进行重新编号而不更改其顺序。


看来OP想要查找location用于唯一标识组位置的列(mid)。如果是这样,那么通过扩展 @Frank 建议的解决方案,解决方案可能是:

library(dplyr)

t %>% group_by(mid) %>%
  mutate(locationDesired = match(location, unique(location[dummy==1]), nomatch=0)) %>%
  as.data.frame()

#    mid   aid dummy location locationDesired
# 1  102 10201     0        0               0
# 2  102 10202     1        2               1
# 3  102 10203     0        0               0
# 4  102 10204     1        4               2
# 5  102 10205     0        0               0
# 6  102 10206     1        1               3
# 7  102 10207     0        0               0
# 8  103 10301     0        0               0
# 9  103 10302     1        2               1
# 10 103 10303     0        0               0
# 11 103 10304     1        2               1
# 12 103 10305     0        0               0
# 13 103 10306     1        3               2
# 14 103 10307     0        0               0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中对交集/组索引的结果重新编号? 的相关文章

  • 修复 ggplot 中构面中的数据顺序

    我在使用 ggplot 绘制数据时遇到问题 我无法使每个方面内的数据正确排序 我的样本数据是 data lt structure list Parameter c 0 1 0 7 0 0 0 2 0 2 0 7 0 0 0 1 0 3 0
  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 循环中的knitr模板和子文档

    圣诞节前我之前问过跨多个 knitr 文档的单一样式表 https stackoverflow com questions 20370584 single style sheet across multiple knitr document
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • 按具有作业的组划分的 R 分位数

    我有以下 df group rep seq 1 3 30 variable runif 90 5 0 7 5 df data frame group variable 我需要 i 按组定义分位数 ii 将每个人分配到相对于其组的分位数 因此
  • 使用 stargazer 分析包含时间序列的数据帧

    我有一个面板数据集共 10 个观测值和 3 个变量 观测值 30 的数量 10 行 国家 地区 2 列 迁移参数 相应年份的 1 列 可以这么说 我的数据框由 3 个年度数据框组成 我该如何申请观星者考虑到它是一个面板数据集 所以最大 N
  • kmeans 对分组数据进行聚类

    目前 我尝试在分组数据中找到簇的中心 通过使用示例数据集和问题定义 我能够创建kmeans每个组内的集群 然而 当涉及到给定组的集群的每个中心时 我不知道如何获取它们 https rdrr io cran broom man kmeans
  • 使用滑动窗口动画 ggplot 时间序列图

    我正在寻找在不失去分辨率的情况下对长时间序列图进行动画处理的方法 我希望视图能够 平移 数据 显示从开始到结束的滑动子集 假设我有以下内容 library ggplot2 library dplyr library gganimate df
  • jupyter 中的 r 图形 - 无法启动 png() 设备

    我在 Jupyter 中使用 R 但无法在笔记本本身中绘制图表 这是一个可重现的示例 set seed 123 mat as matrix x rnorm 100 y rnorm 100 plot mat 在朱皮特中 Error in pn
  • 如何将带有观察计数的标签添加到 stat_summary ggplot?

    我有一个数据集 例如 outcome lt c rnorm 500 45 10 rnorm 250 40 12 rnorm 150 38 7 rnorm 1000 35 10 rnorm 100 30 7 group lt c rep A
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • rpart是自动剪枝吗?

    Is rpart自动修剪 生成的决策树rpart比具有自动修剪功能的 Oracle Data Mining 生成的级别要多得多 否 但拟合函数的默认值可能会 提前 停止分割 对于 早期 的某些定义 See rpart control对于您可
  • 聚合日期时间以总结在特定条件下花费的时间

    我很困惑我应该如何继续 我下面有一些虚拟数据 Date lt as POSIXct c 2018 03 20 11 52 25 2018 03 22 12 01 44 2018 03 20 12 05 25 2018 03 20 12 10
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表?

    我在SQL Server中创建了一个表 如下所示 CREATE TABLE testPK ID INT NOT NULL IDENTITY 1 1 PRIMARY KEY NumVal NUMERIC 18 4 现在我想使用 RODBC 函
  • 美人鱼图:调整图表周围的空白

    我在用 Rstudio 编译的 Rmd 报告中使用了美人鱼图 在 HTML PDF 输出中 图表上方和下方有大量空白 请参见下面的示例 Header Text r library DiagrammeR mermaid graph TD cl
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹

随机推荐

  • 如何从 Java 程序动态创建新的 .java 文件?

    我想从 Java 程序创建一个 java 当我运行该程序时 将在我的项目中自动创建一个 Java 文件 并在该文件中创建一些运行时 动态 变量 我怎样才能做到这一点 我知道为此我必须使用 Reflection API 例如Class and
  • Qt5.8.0缺少vcruntime140d_app.dll

    我有一个非常简单的 Qt 应用程序 由 main cpp mainwindow cpp mainwindow h 和 mainwindow ui 组成 各内容如下所示 main cpp include mainwindow h includ
  • WordPress jQuery 未捕获类型错误:对象 [object Object] 的属性“$”不是函数

    我正在将 html 文件转换为 WordPress 主题 并使用插件 ZClip 将文本复制到剪贴板 ZClip 插件在我的 html 演示中工作正常 但是当转换为 WordPress 时 我在第 288 行中收到了这个奇怪的语法错误 Un
  • 从 Crystal Report 中的多个表推送数据

    我有一个名为 CR1 的水晶报表 现在我想将多个表中的数据填充到我的水晶报表 CR1 中 我使用的是VS2008 编码语言是ASP net中的C 任何帮助将不胜感激 创建一个存储过程然后将其用作报告的数据源 我会帮你的
  • 无法重现类型擦除示例的结果

    我正在阅读 Java 泛型和集合 第 8 4 节 作者在尝试解释二进制兼容性时定义了以下代码 interface Name extends Comparable public int compareTo Object o class Sim
  • python中列表切片语法的问题

    python 的文档中提到了扩展索引语法 slice start stop step 使用扩展索引语法时也会生成切片对象 例如 a start stop step or a start stop i See itertools islice
  • 在VBA中从SQL Server获取数据

    您好 下面是我的代码 我无法从 SQL 服务器获取数据 它的抛出错误为 Compiler error object required 连接没有问题 连接成功 请更正我的代码 帮我解决这个问题 Private Sub CommandButto
  • 迭代范围的函数式方法(ES6/7)[重复]

    这个问题在这里已经有答案了 以更实用的方式执行以下操作的最佳方法是什么 使用 ES6 ES7 let cols for let i 0 i lt 7 i cols push i i return cols 我尝试过 return 7 map
  • jQuery - 正则表达式选择和removeClass()?

    我收到了几个自动生成的 HTML 文档 长达数千行 我需要清理源代码 大多数情况下需要删除 table col 之类的类名 这是一个两步问题 选择具有 table col 的任何及所有类 其中 是 0 999 之间的整数 从元素中删除匹配的
  • 如何执行 GitHub 上的 hello_world 示例:linuxkit/linuxkit?

    情况与问题 我正在尝试跟随本指南 https medium com notsinge making your own linuxkit with docker for mac 5c1234170fb1关于 如何使用 docker for m
  • C++ boost::graph 从有向图中获取父顶点

    我有一个有向图 通过 boost graph 库中的 adjacency graph 实现 我试图找到某个顶点的父顶点 过去 通过 pygraph 我只是简单地反转了有向图 然后进行了邻居搜索 但似乎使用 boost reverse gra
  • Pandas 忽略 NaN 删除重复项

    在 Pandas df 中 我尝试删除多个列中的重复项 每行有很多数据NaN 这只是一个例子 数据是一个混合包 因此存在许多不同的组合 df drop duplicates IDnum name formNumber 1 NaN AP GR
  • 使用 URL 启动应用程序

    我读过有关 android 中的意图的内容 但这是我的问题 我想通过点击网络浏览器中的链接来启动我的 Android 手机上的应用程序 例子 如果链接是 mycam http camcorder com http camcorder com
  • 如何在JQuery中选择除单击元素之外的所有类?

    我有一个在 Drupal 上开发的网站 我使用一个名为 collapsiblock 的模块 它基本上是一个 JQuery 插件 来实现类似手风琴的效果 它对我来说工作得很好 尽管它还处于测试阶段 但我想修改它 以便当用户单击手风琴的一项时
  • 点击列表视图项目上的手势

    我试图在点击列表视图中的项目后打开另一个视图 我尝试过添加一个TapGestureRegonizer甚至添加ViewCell与网格等 这些似乎都不起作用 我在标签中添加了点击手势 这似乎有效 但对于列表视图项目却不起作用 对于列表视图之类的
  • Rails:按两列之和排序

    所以 我有一个Photo模型可以在以下网址下载full size and presentation size 当用户下载照片时 我会在照片的full downloads and presentation downloads属性 这一切都很好
  • Android:如何从资源文件创建文件对象?

    我的资产文件夹中有一个文本文件 我需要将其转换为文件对象 而不是输入流 当我尝试这个时 我得到 没有这样的文件 异常 String path file android asset datafile txt URL url new URL p
  • Application Insights 遥测筛选不起作用

    我已经按照指南操作了here https learn microsoft com en us azure application insights app insights api filtering sampling filtering
  • Signtool 无法使用时间戳对 SHA2 和 SHA1 进行双重签名

    我们需要使用signtool exe使用SHA1和SHA2对我们的二进制文件进行双重签名 我们的证书支持256位SHA2 使用Windows 8 SDK的signtool e g Signtool exe 签名 as fd sha256 t
  • 如何在 R 中对交集/组索引的结果重新编号?

    我在 R 中对交集 组索引的重新编号结果苦苦挣扎了几天 示例数据框如下所示 t lt data frame mid c 102 102 102 102 102 102 102 103 103 103 103 103 103 103 aid