r - 标准化变量 data.table

标签 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]

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

最佳答案

您可以使用scale函数来执行此操作:

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

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

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

关于r - 标准化变量 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439262/

相关文章:

正则表达式:如何将 .* 限制为仅数字和标点符号

r - 如何将 NA 移动到 R data.frame 列的顶部?

r - 当只有一位数字与R不同时的数据转换

r - R图中出现的奇怪线条

根据时差删除重复项并折叠附近的重复项

r - 数据表按组滚动连接

r - 使用 data.table 的 'by' 中的符号列表

r - 基于因子使用不同颜色绘制时间序列

r - 在数据表中创建包含更多行的新列

R:如何在集团层面重新采样日内数据?