使用双键为R中的data.table分配唯一标识符

时间:2014-10-26 23:50:15

标签: r key data.table

我有多个数据表,这些数据表包含许多学生数据行,因此同一个学生可以在多行上,但在某些列中存在细微差别,即:

     FirstName     LastName   HS      Uni Semester Graduated
     -Suzy     Heddenbocher  CHS     BigU    1         N
     -Suzy     Heddenbocher  CHS     BigU    2         N
     -Ed       Heddenbocher  NHS     SWSt    1         N

我使用setkey(Y1, LastName, FirstName)订购了数据表,然后尝试使用

设置uniqid
Y1[, uniqid:=.GRP, by=key(Y1)]  

我得到了一致的错误:

  

[.data.table(Y1 ,,:=(uniqid,.GRP),= key(Y1))出错:     RHS的类型('整数')必须与LHS匹配(' double')。对于最快的情况,检查和强制会对性能产生太大影响。更改目标列的类型,或强制RHS:=自己(例如,使用1L而不是1)

注意:谢谢你的帮助。我不知道什么是"双精度"矢量直到你告诉我那是什么" double"意思是,但它是一个列类问题。我通过运行此代码解决了这个问题:

setkey(Y3, "Last Name", "First Name")
Y3$uniqid <- as.integer(Y3$uniqid)
Y3[, uniqid:=.GRP, by=key(Y3)]

1 个答案:

答案 0 :(得分:2)

您的data.table uniqid中已经定义了Y1,并且之前的定义是一个双精度向量[就是{{ 1}}表示此处,与double键无关。

一个小例子:

data.table