r-如何根据另一列中的重复观察在数据帧中创建另一列

  • 本文关键字:一列 观察 数据帧 创建 何根 r case
  • 更新时间 :
  • 英文 :


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

BX BY
1 2
1 12
1 12
2 14
2 14
3 5

这里是一个基本的R方式
根据分组列对data.frame进行子集设置,找到重复的行并使用标准的cumsum技巧。

df1<-'BX    BY
1   12
1   12
1   12
2   14
2   14
3   5'
df1 <- read.table(textConnection(df1), header = TRUE)
cumsum(!duplicated(df1[c("BX", "BY")]))
#> [1] 1 1 1 2 2 3
df1$ID <- cumsum(!duplicated(df1[c("BX", "BY")]))
df1
#>   BX BY ID
#> 1  1 12  1
#> 2  1 12  1
#> 3  1 12  1
#> 4  2 14  2
#> 5  2 14  2
#> 6  3  5  3

创建于2022-10-12使用reprex v2.0.2

你可以做:

transform(dat, ID = as.numeric(interaction(dat, drop = TRUE, lex.order = TRUE)))
BX BY ID
1  1 12  1
2  1 12  1
3  1 12  1
4  2 14  2
5  2 14  2
6  3  5  3

或者,如果您喜欢dplyr:

library(dplyr)
dat %>% 
group_by(across()) %>%
mutate(ID = cur_group_id()) %>%
ungroup()
# A tibble: 6 × 3
BX    BY    ID
<dbl> <dbl> <int>
1     1    12     1
2     1    12     1
3     1    12     1
4     2    14     2
5     2    14     2
6     3     5     3

相关内容

  • 没有找到相关文章

最新更新