使用2个固定列

时间:2017-11-19 02:47:22

标签: r data.table aggregate-functions data-analysis

我有一个自定义函数我想应用于数据表,如下所示:

DT = data.table(x = rep(c("a","b","c"), each = 2), 
                x2 = rep(c("h","j"), each = 3), 
                y = c(1,3), 
                v = 1:6, 
                z = 7:12, 
                w = 13:18)


DT

   x x2 y v  z  w
1: a  h 1 1  7 13
2: a  h 3 2  8 14
3: b  h 1 3  9 15
4: b  j 3 4 10 16
5: c  j 1 5 11 17
6: c  j 3 6 12 18

我有一个功能,我希望按DT列对x的数字列进行评分。该函数按两个固定列分数,并对数字列上的第3列执行计算。该函数如下(下划线表示固定的列):

scoring <- function(_, z, w) {
  f <- abs(w - _) / abs(w - z)
  f[is.infinite(f)] <- 1
  f[is.nan(f)] <- 1
  return(median(f))
}

结果将(在这种情况下)有2个新列yv,这两个列将使用x的分数函数进行聚合(对于群组& #34; a&#34;,&#34; b&#34;和&#34; c&#34;。例如:

y: a: 0.9166667
y: b: 1.25
y: c: 1.583333

v: a: 1
v: b: 1
v: c: 1

我的问题是: 我知道我可以在data.table中使用by功能,但我不知道如何告诉它为我的自定义函数保留两个列并对其余列执行计算。

0 个答案:

没有答案