按不同类别分组

时间:2019-05-29 14:24:37

标签: r dataframe

对于某些人来说,这非常容易:理论上讲,是关于使用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

欢迎任何帮助

1 个答案:

答案 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))