我正在尝试:= group by一个类型为'integer'的现有列,其中新值的类型为'double',但失败了.
我的场景是根据其他列中的值将表示时间的列变为POSIXct.我可以修改data.table的创建作为一种解决方法,但我仍然对如何实际更改列的类型感兴趣,正如错误消息中所建议的那样.
这是我的问题的简单玩具示例:
db = data.table(id=rep(1:2, each=5), x=1:10, y=runif(10))
db
id x y
1: 1 1 0.47154470
2: 1 2 0.03325867
3: 1 3 0.56784494
4: 1 4 0.47936031
5: 1 5 0.96318208
6: 2 6 0.83257416
7: 2 7 0.10659533
8: 2 8 0.23103810
9: 2 9 0.02900567
10: 2 10 0.38346531
db[, x:=mean(y), by=id]
Error in `[.data.table`(db, , `:=`(x, mean(y)), by = id) :
Type of RHS ('double') must match LHS ('integer'). To check and coerce …Run Code Online (Sandbox Code Playgroud)