如果满足条件,则计算行

Ali*_*Deg 1 r

我觉得我错过了一些东西,但我找不到答案。我正在尝试定义 group_id 条件匹配时组开始的位置。在这种情况下,条件是 valuex 不等于 valuey。这可以通过 SQL 中的窗口函数轻松实现,但我不知道在 R 中该做什么

这是输入值。

Name|valuex|valuey
A   |     X|     X
A   |     X|     X
A   |     X|     X
A   |     X|     Z
A   |     Z|     Z
A   |     Z|     Z
A   |     Z|     Z
A   |     Z|     Y
Run Code Online (Sandbox Code Playgroud)

预期产出

Name|valuex|valuey|group
A   |     X|     X|0
A   |     X|     X|0
A   |     X|     X|0
A   |     X|     Z|1
A   |     Z|     Z|1
A   |     Z|     Z|1
A   |     Z|     Z|1
A   |     Z|     Y|2
Run Code Online (Sandbox Code Playgroud)

r2e*_*ans 5

基础 R:

dat$group <- cumsum(dat$valuex != dat$valuey)
dat
#   Name valuex valuey group
# 1    A      X      X     0
# 2    A      X      X     0
# 3    A      X      X     0
# 4    A      X      Z     1
# 5    A      Z      Z     1
# 6    A      Z      Z     1
# 7    A      Z      Z     1
# 8    A      Z      Y     2
Run Code Online (Sandbox Code Playgroud)

数据:

dat <- structure(list(Name = c("A", "A", "A", "A", "A", "A", "A", "A"
), valuex = c("X", "X", "X", "X", "Z", "Z", "Z", "Z"), valuey = c("X", 
"X", "X", "Z", "Z", "Z", "Z", "Y")), class = "data.frame", row.names = c(NA, 
-8L))
Run Code Online (Sandbox Code Playgroud)