bio*_*ian 2 r multiplication apply
我希望将一大组缩放因子应用于数据框,这些因子特定于样本来自的组,特别是样本的每个变量.我试图为这个问题构建一个最小的例子.
缩放因素
Batch A B
Q 1.01 1.31
R 0.90 1.22
S 1.04 1.09
Run Code Online (Sandbox Code Playgroud)
数据
Batch A B
Q 23 10
Q 22 11
R 27 12
R 26 13
S 22 14
S 24 15
Run Code Online (Sandbox Code Playgroud)
那么,比方说,批次Q样本1将从23,10到23.23,13.1
我意识到在解决方案中可能会有一个应用,但我正在努力找出从哪里开始.任何帮助非常感谢:-)
scaling_factors_example<-data.frame(Batch=c("Q","R","S"),A=c(1.01,0.9, 1.04), B=c(1.31, 1.22, 1.09))
data_example<-data.frame(Batch=c("Q","Q","R","R","S","S"), A=c(23,22,27,26,22,24), B=c(10,11,12,13,14,15))
Run Code Online (Sandbox Code Playgroud)
如果你采用合并方式而不是使用apply系列,它会更容易,我认为(s
是scaling_factors_example
,d
是data_example
)
m <- merge(d[ ,1, drop=F], s, "Batch")
d[-1] <- m[-1] * d[-1]
d
Batch A B
1 Q 23.23 13.10
2 Q 22.22 14.41
3 R 24.30 14.64
4 R 23.40 15.86
5 S 22.88 15.26
6 S 24.96 16.35
Run Code Online (Sandbox Code Playgroud)
说明
merge
为您提供与您的数据大小相同的数据框,其中包含每个条目的相应缩放因子.现在您可以简单地将列相乘.