gpt4 book ai didi

r - 如何将数据帧 A 中的每一列重复除以数据帧 B 中同一列的中位数?

转载 作者:行者123 更新时间:2023-12-02 14:39:11 26 4
gpt4 key购买 nike

我有一个数据框“tmp”,其中每列包含特定样本的读数列表。我有另一个数据帧“tmpb”包含背景噪声读数。我想将“tmp”中每列中的每个条目除以“tmpb”数据帧中相应列的中位数。我尝试使用 sapply 和 transmute (dplyr),但发现很难理解它们的语法并将其用于我的问题(我是 R 新手)。

我设法通过 for 循环实现了我想要的目标,但是有人可以告诉我如何以更直接的方式做到这一点吗?

head (tmp)

Time C2F9RA23 C2F9RD C2F9RZ C2F9DA23 C2F9DD C2F9DZ
5 5 365.9755 209.9572 559.2779 233.4608 135.1393 198.7386
6 6 351.4190 241.1814 593.3041 224.5569 135.7866 229.8217
7 7 343.7087 224.6147 575.8846 238.8623 139.4048 193.8843
8 8 351.1890 207.5736 589.4181 242.7238 139.4259 213.2959

head(tmpb)

Time C2F9RA23 C2F9RD C2F9RZ C2F9DA23 C2F9DD C2F9DZ
5 5 365.9755 209.9572 559.2779 233.4608 135.1393 198.7386
6 6 351.4190 241.1814 593.3041 224.5569 135.7866 229.8217
7 7 343.7087 224.6147 575.8846 238.8623 139.4048 193.8843
8 8 351.1890 207.5736 589.4181 242.7238 139.4259 213.2959

我尝试使用 for 循环 -


output<-data.frame(tmp$Time)
for (i in 2:ncol(tmp)) {
output<- data.frame(output,tmp[,i]/median(tmpb[,i],na.rm=T))
}
colnames(cakin_norm2)<-colnames(tmp)

head(output)

Time C2F9RA23 C2F9RD C2F9RZ C2F9DA23 C2F9DD C2F9DZ
1 5 1.109141 0.9831341 1.281213 0.9182793 0.9938967 1.038065
2 6 1.065026 1.1293430 1.359162 0.8832571 0.9986575 1.200421
3 7 1.041658 1.0517686 1.319256 0.9395253 1.0252683 1.012710
4 8 1.064328 0.9719731 1.350260 0.9547136 1.0254230 1.114102

有人可以告诉我如何使用 apply 或 mutate 或其他命令以更少的代码执行此操作吗?对我以后有很大帮助!

谢谢!

最佳答案

另一种可能性是:

sweep(df[-1], 2, sapply(df2[-1], median), "/")

C2F9RA23 C2F9RD C2F9RZ C2F9DA23 C2F9DD C2F9DZ
5 1.0417630 0.9662714 0.9598843 0.9885640 0.9821477 0.9646697
6 1.0003274 1.1099724 1.0182832 0.9508614 0.9868521 1.1155459
7 0.9783797 1.0337286 0.9883863 1.0114360 1.0131479 0.9411071
8 0.9996726 0.9553015 1.0116137 1.0277871 1.0133013 1.0353303

关于r - 如何将数据帧 A 中的每一列重复除以数据帧 B 中同一列的中位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57806865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com