通过排列两个变量添加计数器列(dplyr)

2024-02-27

我到处寻找了一段时间,但找不到适合我情况的任何解决方案。我有一个数据框,其中混合有 ID 和 VAR。下面我尝试复制一个示例

require(dplyr)
seed(123)
N <- 3
T <- 4
id <- rep(letters[1:N], each = T) 
var <- rep(sample(seq(1:100),T),N) 
row <- sample(seq(1:(N*T)),replace = F)

dt <- data.frame(ID=id,VAR=var,ROW=row) %>%
  arrange(ROW) %>%
  select(-ROW)

我想arrange通过 ID 和 VAR 并为每个组添加一个计数器以获得类似的结果

   ID VAR COUNTER
1   a   1 1
2   a  11 2
3   a  22 3
4   a  64 4
5   b   1 1
6   b  11 2
7   b  22 3
8   b  64 4
9   c   1 1
10  c  11 2
11  c  22 3
12  c  64 4

所有这一切,如果可能的话,只需使用 dplyr 或基本函数即可。


Within dplyr你需要arrange() by ID and VAR进而group_by() just ID.

然后你使用mutate()添加新列,从 1 数到n() (where n()是“行数”的 dplyr 函数)

set.seed(123)
dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) %>%  ## as per comment, can use row_number()
    ungroup()

# # A tibble: 12 × 3
#         ID   VAR COUNTER
#     <fctr> <int>   <int>
# 1       a    29       1
# 2       a    41       2
# 3       a    79       3
# 4       a    86       4
# 5       b    29       1
# 6       b    41       2
# 7       b    79       3
# 8       b    86       4
# 9       c    29       1
# 10      c    41       2
# 11      c    79       3
# 12      c    86       4

关于取消分组的评论

我这样做是为了删除与某个关联的所有“分组”属性grouped_df。在此示例中,结果是相同的,但这些分组的属性可能会进一步影响您。

dt_grouped <- dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) 

dt_ungrouped <- dt %>%
    arrange(ID, VAR) %>%
    group_by(ID) %>%
    mutate(COUNTER = 1:n()) %>%
    ungroup()

str(dt_grouped)
# Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame':   12 obs. of  3 variables:
#   $ ID     : Factor w/ 3 levels "a","b","c": 1 1 1 1 2 2 2 2 3 3 ...
# $ VAR    : int  29 41 79 86 29 41 79 86 29 41 ...
# $ COUNTER: int  1 2 3 4 1 2 3 4 1 2 ...
# - attr(*, "vars")=List of 1
# ..$ : symbol ID
# - attr(*, "labels")='data.frame': 3 obs. of  1 variable:
#   ..$ ID: Factor w/ 3 levels "a","b","c": 1 2 3
# ..- attr(*, "vars")=List of 1
# .. ..$ : symbol ID
# ..- attr(*, "drop")= logi TRUE
# - attr(*, "indices")=List of 3
# ..$ : int  0 1 2 3
# ..$ : int  4 5 6 7
# ..$ : int  8 9 10 11
# - attr(*, "drop")= logi TRUE
# - attr(*, "group_sizes")= int  4 4 4
# - attr(*, "biggest_group_size")= int 4

str(dt_ungrouped)
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 12 obs. of  3 variables:
#   $ ID     : Factor w/ 3 levels "a","b","c": 1 1 1 1 2 2 2 2 3 3 ...
# $ VAR    : int  29 41 79 86 29 41 79 86 29 41 ...
# $ COUNTER: int  1 2 3 4 1 2 3 4 1 2 ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过排列两个变量添加计数器列(dplyr) 的相关文章

  • matplotlib 中的 R 风格数据轴缓冲区

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

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • ggplot 图例标签内的希腊字母、符号和换行符

    我在尝试着 有换行符 自动或强制 对齐文本 左对齐或左右对齐 有希腊字母和百分号 在 gglot 图例标签内 我尝试了几种方法 但我似乎无法将我读到的所有技巧结合起来 我可以通过插入来换行 n进入标签 但这似乎不适用于希腊字母 不适用于图例
  • 如何有效地将多个光栅 (.tif) 文件导入 R

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

    我尝试对 2000 多行关键字的列表运行文本分析 但它们的列出方式如下 战略 管理风格 组织 所以当我使用 tm 删除标点符号时 它就变成了 组织的战略管理风格 我认为这在某种程度上破坏了我常用术语的分析 我尝试过使用 vector lt
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • RStudio 不会通过 rPython 调用加载所有 Python 模块

    我从 Bash 和 RStudio 中运行相同的脚本时出现一些意外行为 请考虑以下事项 我有一个文件夹 rpython 包含两个脚本 test1 R library rPython setwd rpython python load tes
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • 使用 pkg:sjPlot 函数创建一个生成部分斜体单元格的数据框

    我正在尝试创建一个简单的数据表 其中 Coral taxon 列中的属名称为斜体 而 spp 列中的属名称为斜体 属名后面的部分不大写 我尝试使用 expression 函数对 Coral taxon 的每一行进行编码 但没有成功 sum
  • 排序因素与水平

    有人能解释一下 R 中 ordered 参数的用途吗 R says ordered逻辑标志来确定级别是否应被视为有序 按给定的顺序 所以如果我有一个名为名称的因素并设置ordered TRUE names lt factor c fred
  • Python Pandas:如何对组中的所有项目进行分组并为其分配 id?

    我有 df domain orgid csyunshu com 108299 dshu com 108299 bbbdshu com 108299 cwakwakmrg com 121303 ckonkatsunet com 121303
  • RStudio 如何确定控制台宽度,为什么它似乎总是出错?

    我刚刚发现wid lt options width在 RStudio 中 它似乎是我日常控制台使用中令人烦恼的根源 或者更确切地说 更接近根源 我应该先说一下 我目前使用的是 R 3 2 2 RStudio 0 99 491 Linux M
  • 如何绘制堆积比例图?

    我有一个数据框 x lt data frame id letters 1 3 val0 1 3 val1 4 6 val2 7 9 id val0 val1 val2 1 a 1 4 7 2 b 2 5 8 3 c 3 6 9 我想绘制一个
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor

随机推荐

  • SwiftUI:自动预览更新始终暂停

    我有一个现有的应用程序 基本上是一个购物清单应用程序 我试图向其中添加一些甜蜜的 SwiftUI 爱 我的问题是实时预览更新不起作用 不断显示警告 自动预览更新已暂停 我点击了恢复按钮 它构建了应用程序 它显示了当前视图 并且该警告立即再次
  • 警告消息:在“...”中:因子水平无效,生成 NA

    我不明白为什么我收到此警告消息 gt fixed lt data frame Type character 3 Amount numeric 3 gt fixed 1 lt c lunch 100 Warning message In lt
  • Prestashop Web 服务 API 不断要求身份验证

    我遇到这个问题 我从 prestashop 启用了 web 服务 如果我编写 URL 直接从 post 方法传递参数 我可以访问它 mykey 但是 如果我尝试在不传递 ws key 作为参数的情况下进行访问 它会一直要求我进行身份验证 从
  • JavaScript 扩展类

    我有一个基类 function Monster this health 100 Monster prototype growl function console log Grr 我想扩展并创建另一个类 function Monkey ext
  • 如何以编程方式停止 Windows 服务

    关于Windows服务编程 如何停止我的Windows服务 这是一个非常简化的示例代码 C Here is my service class MyTestService cs public class MyTestService Servi
  • 如何使用 Valgrind 检测分段错误细节?

    我有一个 std map 它通过一些 API 调用进行初始化 当我尝试使用此地图时 出现分段错误 如何检测无效代码或无效内容或任何可以帮助我解决问题的细节 代码如下所示 std map lt std string std string gt
  • 在 SwiftUI 中,如何增加按钮的高度?

    正如您在屏幕截图中看到的 按钮高度没有调整以适应文本大小 使其看起来很丑 我怎样才能增加按钮的高度 这样它看起来就不傻了 我的问题是 如何增加 SwiftUI 中按钮的高度 我正在尝试制作类似 Minecraft 的游戏的标题屏幕 stru
  • 将电子邮件设置为 IMAP 服务器上的“已查看”

    我正在尝试从 Imap 服务器 Gmail 读取邮件 我会检查是否有新邮件 未见 并按所见进行检查 我写了这段代码但是 imap setflag full 似乎不起作用 如果我有一封新邮件 则脚本无法放置 SEEN 标志 并且它回显我总是有
  • SQLALCHEMY 忽略查询中的重音符号

    考虑到我的用户可以将数据保存为 caf 或 cafe 我需要能够使用不区分重音的查询来搜索该字段 我发现了https github com djcoin django unaccent https github com djcoin dja
  • 警告:“SDK 版本问题”。 Xcode 10.1

    当使用 xcode 10 1 上传我的应用程序时 我收到警告 警告 ITMS 90725 SDK 版本问题 此应用程序是使用 iOS 12 0 SDK 构建的 从 2019 年 3 月开始 提交到 App Store 的所有 iOS 应用程
  • mysql连接用户标志后有空格

    我有一个问题 这个有什么意义空白在用户标志之后 u在 mysql 连接字符串内 mysql u myname pmypass mydb 我的意思是说 如果我之后不传递空格 上面的命令就可以正常工作 u然后将上面的命令写如下 mysql um
  • socket,检测连接丢失

    我正在使用 TCP 连接连接服务器进程和客户端进程 并且我必须检测两台机器之间的物理连接已断开 我正在尝试使用 keepalive 来做到这一点 将默认系统范围值减少为 TCP KEEPIDLE 5TCP KEEPCNT 5TCP KEEP
  • 在 Rust 中,将 &str 拆分为每个包含一个字符的 &str 迭代器的惯用方法是什么?

    如果我想采取 str like aeiou 并将其变成一个迭代器 大致相当于 a e i o u iter 最惯用的方法是什么 我试过做 aeiou split 这对我来说似乎是惯用的 但我很空虚 strs 位于开头和结尾 我试过做 aei
  • 使用perl修改xml标签的属性值

    我有一个很长的 xml 我希望更新其中一个嵌套非常深的标签的属性值 因此不想逐个节点进行操作 此外 目标节点的结构始终不相同 如下所示 输入 XML 为
  • 创建 PHP 登录页面的最佳方法是什么?

    我对 PHP 相当陌生 正在寻找一些有关如何在 PHP 中实现身份验证的最佳实践 我是 Adob e 的传播者 令我烦恼的一件事是人们使用 Flex Flash 作为登录屏幕 因此 我想写一篇博客文章 示例 介绍如何使用 HTML PHP
  • Material Design 的 Side-Menu.Android 中的活动意图

    in https github com Yalantis Side Menu Android https github com Yalantis Side Menu Android 请帮我 当我单击侧面菜单中的每个项目时 如何转到命令 意图
  • Laravel getQueryLog 显示行查询已执行

    正如标题所说 我想知道是否有办法获得getQueryLog函数显示查询行 var dump DB getQueryLog 你不能这样做getQueryLog 但您可以监听查询 生成回溯并最终提取行号 routes php Event lis
  • 如何从点文件中提取子图

    我有一个由名为egypt的软件生成的点文件 点文件包含许多节点和边 如果我用这个点文件画图 由于节点太多 很难看清图片 而我需要的只是从一个节点开始的子图 不需要全图 有没有办法使用这个点文件从指定节点 例如start node 绘制子图
  • 避免注册表 Wow6432Node 重定向

    我尝试在 c 中使用 Microsoft Win32 RegistryKey 插入一些简单的注册表项 但路径会自动更改为 HKEY LOCAL MACHINE SOFTWARE Test to HKEY LOCAL MACHINE SOFT
  • 通过排列两个变量添加计数器列(dplyr)

    我到处寻找了一段时间 但找不到适合我情况的任何解决方案 我有一个数据框 其中混合有 ID 和 VAR 下面我尝试复制一个示例 require dplyr seed 123 N lt 3 T lt 4 id lt rep letters 1