当R中列中的值更改时,基于增量值创建ID值 [英] Create a ID value based on an incremental value when a value in a column changes in R

查看:49
本文介绍了当R中列中的值更改时,基于增量值创建ID值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个段" ID,以便:

I would like to create a 'segment' ID so that:

  1. 如果值(在一列中)与保持相同的段ID之前的行相同
  2. 但是,如果值(在一列中)与段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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆