【问题标题】:How to create a column based on repeated values in other columns?如何根据其他列中的重复值创建列?
【发布时间】:2022-10-13 16:30:26
【问题描述】:

所以基本上我有一个看起来像这样的数据框:

BX BY
4.1 12.4
4.1 12.4
4.1 12.4
10.0 14.5
10.0 14.5
9.7 5.6

BXBY 变量是坐标,我想创建一个 ID 列,该列对于具有相同坐标的每个点都是相同的,它应该是这样的:

BX BY ID
4 12 1
4 12 1
4 12 1
10 14 2
10 14 2
9 5 3

【问题讨论】:

  • 这与您昨天询​​问的question 有何不同?

标签: r


【解决方案1】:

使用 dplyr...

library(dplyr)

df1 |> 
  group_by(BX, BY) |> 
  mutate(ID = cur_group_id())
#> # A tibble: 6 × 3
#> # Groups:   BX, BY [3]
#>      BX    BY    ID
#>   <dbl> <dbl> <int>
#> 1     4    12     1
#> 2     4    12     1
#> 3     4    12     1
#> 4    10    14     3
#> 5    10    14     3
#> 6     9     5     2

数据

df1 <- structure(list(BX = c(4, 4, 4, 10, 10, 9), 
                      BY = c(12, 12, 12,14, 14, 5)), 
                 class = c("tbl_df", "tbl", "data.frame"), 
                 row.names = c(NA, -6L))

创建于 2022 年 10 月 13 日,reprex v2.0.2

【讨论】:

    【解决方案2】:

    data.table

    library(data.table)
    setDT(df)
    df[, id := .GRP, by = .(bx, by)]
    setDF(df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2023-01-24
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多