使用i替换已排序的数据框列中的每个唯一值

时间:2018-05-08 13:42:25

标签: r

我是R的新手,我有一个包含用户ID列表的海量数据文件。我想用每个id从1开始的数字替换那些用户ID。这可能吗?

这就是我所拥有的:

这就是我想要的:

2 个答案:

答案 0 :(得分:2)

使用as.factor方法尝试此解决方案:

df中,您有输入数据:

df<-data.frame(ID=c(7001,7001,8001,8002),A=c(1,2,3,4))
df
    ID A
1 7001 1
2 7001 2
3 8001 3
4 8002 4

替换ID

df$ID<-as.numeric(as.factor(df$ID))
df
  ID A
1  1 1
2  1 2
3  2 3
4  3 4

答案 1 :(得分:0)

我们可以使用match按照唯一ID的出现顺序获取索引

dat$ID <- with(dat, match(ID, unique(ID)))
dat$ID
#[1] 1 1 2 3

或使用.GRP

中的data.table
library(data.table)
setDT(dat)[, ID := .GRP, ID] 

更新

基于OP的描述,

dat$ID <- cumsum(c(TRUE, diff(dat$E) < 0))