我有一套观察性健康调查数据。我想修改源标识符,以便我仍然可以识别多个源,但原始ID不是跟踪ID以保持机密性。我无法搞清楚。
这是数据帧的基本布局
ID
30
30
30
30
24
24
24
我想创建一个newID,以便数据看起来像下面的
NewID ID
1 30
1 30
1 30
1 30
2 24
2 24
2 24
答案 0 :(得分:4)
如果您的数据框是df,那么应该这样做。
df$NewID <- as.numeric(factor(df$ID))
答案 1 :(得分:0)
cbind(match(ID,unique(ID)),ID)
答案 2 :(得分:0)
rle
在这里很有用:
> ID <- rep(c(30,24), c(4,3)) # your data
> ind <- rle(ID)$lengths
> data.frame(ID, newID=rep(c(1,length(ind)), ind ))
ID newID
1 30 1
2 30 1
3 30 1
4 30 1
5 24 2
6 24 2
7 24 2
transform
也是另一种选择
> transform(ID, newID=rep(c(1,2), rle(ID)$lengths))