我有多个数据表,这些数据表包含许多学生数据行,因此同一个学生可以在多行上,但在某些列中存在细微差别,即:
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)]
答案 0 :(得分:2)
您的data.table uniqid
中已经定义了Y1
,并且之前的定义是一个双精度向量[就是{{ 1}}表示此处,与double
键无关。
一个小例子:
data.table