当R中列中的值更改时,基于增量值创建ID值 [英] Create a ID value based on an incremental value when a value in a column changes in R
本文介绍了当R中列中的值更改时,基于增量值创建ID值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建一个段" ID,以便:
I would like to create a 'segment' ID so that:
- 如果值(在一列中)与保持相同的段ID之前的行相同
- 但是,如果值(在一列中)与段ID递增1之前的行不同
我目前正在尝试通过以下方式实现此目标:
I am currently trying to achieve this via:
require(dplyr)
person <- c("Mark","Mark","Mark","Mark","Mark","Steve","Steve","Tim", "Tim", "Tim","Mark")
df <- data.frame(person,stringsAsFactors = FALSE)
df$segment = 1
df$segment <- ifelse(df$person == dplyr::lag(df$person),dplyr::lag(df$segment),dplyr::lag(df$segment)+1)
但是我无法通过这种方法获得理想的结果.
But I am not getting the desired result through this method.
任何帮助将不胜感激
推荐答案
如果您想增加更改,请尝试
If you want to increment on change, try this
df %>% mutate(segment = cumsum(person != lag(person, default="")))
# person segment
# 1 Mark 1
# 2 Mark 1
# 3 Mark 1
# 4 Mark 1
# 5 Mark 1
# 6 Steve 2
# 7 Steve 2
# 8 Tim 3
# 9 Tim 3
# 10 Tim 3
# 11 Mark 4
这篇关于当R中列中的值更改时,基于增量值创建ID值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文