我觉得我错过了一些东西,但我找不到答案。我正在尝试定义 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)
基础 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)