【发布时间】:2018-04-04 00:47:30
【问题描述】:
假设我想在 data.table 中创建一列,其中每一行中的值等于同一行中其他三个单元格中的值的标准差。例如,如果我做
DT <- data.table(a = 1:4, b = c(5, 7, 9, 11), c = c(13, 16, 19, 22), d = c(25, 29, 33, 37))
DT
a b c d
1: 1 5 13 25
2: 2 7 16 29
3: 3 9 19 33
4: 4 11 22 37
我想添加一列,其中包含每一行的 a、b 和 d 的标准差,如下所示:
a b c d abdSD
1: 1 5 13 23 12.86
2: 2 7 16 27 14.36
3: 3 9 19 31 15.87
4: 4 11 22 35 17.39
我当然可以编写一个 for 循环或使用 apply 函数来计算它。不幸的是,我真正想做的需要应用于数百万行,不像计算标准偏差那样简单,需要在几分之一秒内完成,所以我真的需要一个矢量化的解决方案。我想写类似的东西
DT[, abdSD := sd(c(a, b, d))]
但不幸的是,这并没有给出正确的答案。是否有任何 data.table 语法可以从同一行中的不同值创建一个向量,并使该向量可供填充该行中的新单元格的函数访问?任何帮助将不胜感激。 @阿伦
【问题讨论】:
标签: r data.table