1

我有一组观察性健康调查数据。我想修改源标识符,以便我仍然可以识别多个源,但为了保密,原始 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
4

3 回答 3

4

if your data frame is df then this should do it.

 df$NewID <- as.numeric(factor(df$ID)) 
于 2013-03-28T15:52:18.797 回答
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))
于 2013-03-29T11:58:56.233 回答
0

cbind(match(ID,unique(ID)),ID)

于 2013-03-28T15:50:40.043 回答