我怎么才能算出col2呢?

col1中的值在被不同的值中断后出现时,col2应该递增,例如,创建一个分组变量,该变量在每次新序列开始时都会改变.

structure(list(col1 = c("A", "A", "A", "A", "B", "B", "B", "C", 
"C", "C", "C", "A", "A", "E", "E", "E", "F", "F", "F", "G", "G", 
"G", "C", "C", "C", "A", "A", "A"), col2 = c(1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA, 
-28L))

请注意,情况并非如此.

   col1 col2
1     A    1
2     A    1
3     A    1
4     A    1
5     B    1
6     B    1
7     B    1
8     C    1
9     C    1
10    C    1
11    C    1
12    A    2
13    A    2
14    E    1
15    E    1
16    E    1
17    F    1
18    F    1
19    F    1
20    G    1
21    G    1
22    G    1
23    C    2
24    C    2
25    C    2
26    A    3
27    A    3
28    A    3

推荐答案

一种 Select 是使用consecutive_id两次,如下所示:

library(dplyr, warn = FALSE)

df |>
  select(-col2) |>
  mutate(col2 = consecutive_id(col1)) |>
  mutate(col2 = consecutive_id(col2), .by = col1)
#>    col1 col2
#> 1     A    1
#> 2     A    1
#> 3     A    1
#> 4     A    1
#> 5     B    1
#> 6     B    1
#> 7     B    1
#> 8     C    1
#> 9     C    1
#> 10    C    1
#> 11    C    1
#> 12    A    2
#> 13    A    2
#> 14    E    1
#> 15    E    1
#> 16    E    1
#> 17    F    1
#> 18    F    1
#> 19    F    1
#> 20    G    1
#> 21    G    1
#> 22    G    1
#> 23    C    2
#> 24    C    2
#> 25    C    2
#> 26    A    3
#> 27    A    3
#> 28    A    3

R相关问答推荐

按条件计算观察次数

按崩溃类别分类的指数

通过绘图 Select 线串几何体并为其着色

使用spatVector裁剪网格数据时出现的问题

具有多个依赖变量/LHS的逻辑模型

带有叠加饼图系列的Highmap

如何从当前行上方找到符合特定条件的最接近值?

使用R闪光显示所有数据点作为默认设置

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

使用rvest从多个页面抓取时避免404错误

DEN扩展包中的RECT树形图出现异常行为

合并后返回列表的数据帧列表

如何在R中通过多个变量创建交叉表?

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

我需要使用ggplot2制作堆叠条形图

在r中整理图例和堆叠图的问题

使用LAG和dplyr执行计算,以便按行和按组迭代

如何在shiny 的应用程序 map 视图宣传单中可视化单点