规范化变量data.table

时间:2016-04-06 00:12:40

标签: r data.table

我希望通过减去每个组中的平均值来规范化data.table中的变量。我是按照以下方式完成的:

dx <- data.table(x=c(1,3,5,1,8,11),group=factor(c(1,1,1,2,2,2)))
dy <- dx[,.(xmean=mean(x)),by=.(group)]
setkey(dx,group)
setkey(dy,group)
dx[dy,x_norm:=x-xmean]

我想知道是否有更简洁的方法来做到这一点?

1 个答案:

答案 0 :(得分:7)

您可以使用scale功能执行此操作:

dx[, x_norm := scale(x, center = TRUE, scale = FALSE), by = group]

这相当于@Hadd E. Nuff的方式:

dx[, x_norm := x - mean(x), by = group]