对于某些人来说,这非常容易:理论上讲,是关于使用group_by()函数和filter()函数的。但是对我来说还是有问题的
library(dplyr)
df <- data.frame(Serial=c(1010,1010,1102,1102,1102,1103), Value=c(1,2,1,2,3,1))
df
Serial Value
1 1010 1
2 1010 2
3 1102 1
4 1102 2
5 1102 3
6 1103 1
我想基于序列号和值创建一个id变量,例如
Serial Value Id
1 1010 1 1
2 1010 2 1
3 1102 1 2
4 1102 2 2
5 1102 3 2
6 1103 1 3
欢迎任何帮助
答案 0 :(得分:0)
一个选项是
df$Id <- cumsum(df$Value == 1)
df$Id
#[1] 1 1 2 2 2 3
或使用factor
as.integer(factor(df$Serial))
或使用match
with(df, match(Serial, unique(Serial))