我希望您可以按照会话组对data.table中的一组变量进行比例缩放:
但是我收到了一个错误:
代码可以正常运行,但只有在没有分组变量(session)的情况下才能运行。我做错了什么?
session score1 score2
1: 1 0.11111111 0.6000000
2: 1 0.00000000 0.5333333
3: 1 0.27777778 0.6666667
4: 1 0.66666667 0.8666667
5: 1 0.83333333 1.0000000
6: 2 0.07692308 0.5757576
7: 2 0.25641026 0.6363636
8: 2 0.00000000 0.5303030
9: 2 0.64102564 0.7878788
10: 2 0.84615385 1.0000000
我已经尝试过:
dt[,(2:3):=lapply(.SD,scale),by="session",.SDcols=2:3]
但是我收到了一个错误:
Error in `[.data.table`(dt, , `:=`((2:3), lapply(.SD, scale)), by = "session", :
All items in j=list(...) should be atomic vectors or lists. If you are trying something like j=list(.SD,newcol=mean(colA)) then use := by group instead (much quicker), or cbind or merge afterwards.
代码可以正常运行,但只有在没有分组变量(session)的情况下才能运行。我做错了什么?
dt[, c("score1") := as.vector(scale(score1)), by = session]
。 - aclong