我有以下数据框:
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'
值的情况,为此,我还想计算开销。为匹配最重要的列,那么,和。S
B
Target=='C'
M
BUF
B
S
有什么想法怎么做?我可以编写几个循环和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] 删除。
我来说两句