首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于data.table中的另一列创建唯一标识符列

基于data.table中的另一列创建唯一标识符列
EN

Stack Overflow用户
提问于 2015-03-27 19:05:35
回答 2查看 270关注 0票数 3

正如标题所述,我试图在data.table中创建一个列,作为另一个列的唯一标识符。我的数据集是数亿个观测值,但这里有一个播放集和我迄今编写的代码:

代码语言:javascript
复制
# I use a key because there are many more columns, but they are irrelevant here
myDT <- data.table(Addy=c("12hig", "12hig", "12hig", "1AbHN", "198aM"),key="Addy")

    Addy
1: 12hig
2: 12hig
3: 12hig
4: 198aM
5: 1AbHN

uniqueDT <- unique(myDT[,list(Addy)]) # is this inefficient?
uniqueDT[,mrpId := seq(1,nrow(uniqueDT),1)]

Addy mrpId
1: 12hig     1
2: 198aM     2
3: 1AbHN     3


myDT[J(uniqueDT)]
    Addy mrpId
1: 12hig     1
2: 12hig     1
3: 12hig     1
4: 198aM     2
5: 1AbHN     3

上面的代码完成了任务,但我不知道它是否有效。是否有更多的data.table-esque方式来做这件事?

编辑:

您可能想知道为什么我要从唯一标识符创建唯一标识符。好吧,这里的想法基本上是创建一个哈希。'Addy‘列数据是非常长的字符串,我需要对这些数据进行操作,所以我认为最好对较少的字节进行操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-27 19:14:50

这应该是快速的,并且至少更简单一些:

代码语言:javascript
复制
myDT[, mrpID:=.GRP, by=Addy]
myDT
    Addy mrpID
1: 12hig     1
2: 12hig     1
3: 12hig     1
4: 198aM     2
5: 1AbHN     3
票数 4
EN

Stack Overflow用户

发布于 2015-03-27 19:21:27

除了data.table之外,base factor类似乎是您所需要的:

代码语言:javascript
复制
myDT[, mrpID:=as.numeric(as.factor(Addy))]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29308370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档