规范化列中的值以获取开销

时间:2013-12-09 09:53:24

标签: r

我有以下数据框:

df <- data.frame(
      Target=rep(LETTERS[1:3],each=8),
      Prov=rep(letters[1:4],each=2),
      B=rep("5MB"),
      S=rep("1MB"),
      BUF=rep("8kB"),
      M=rep(c('g','p')),
      Thr.mean=1:24)

我的列Thr.mean我希望通过Target=='C'的值来规范化(我不介意附加新列)。

为了澄清,我想最终:

Thr.mean <- c(1/17,2/18,3/19,4/20,5/21,6/22,7/23,8/24,9/17,10/18,11/19,12/20,13/21,14/22,15/23,16/24,1,1,1,1,1,1,1,1)

现在,可能会发生此数据框中有行Target!='C',并且SB中的值不存在于{{1}的行中对于这些,我还想计算开销。最重要的匹配列是Target=='C',然后是MBUFB

任何想法怎么做?我可以写几个循环和ifs,但我正在寻找一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

对后代来说,

我解决问题的方法是使用data.table

DT <- data.table(df)
DT[, Thr.Norm.C := .SD[Target=='C', Thr.mean], by = 'B,BUF,Prov']
DT[, over.thr := Thr.Norm.C/Thr.mean]