标准化列中的值以获得开销

尼古拉·克尼泽维奇

我有以下数据框:

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我想通过where的值对它的列进行规范化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'值的情况,为此,我还想计算开销。为匹配最重要的列,那么SBTarget=='C'MBUFBS

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

尼古拉·克尼泽维奇

为了后代,

解决问题的方法是使用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]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章