gpt4 book ai didi

r - 将每个数据框行除以R中的向量

转载 作者:行者123 更新时间:2023-12-01 18:34:02 26 4
gpt4 key购买 nike

我试图将 16 列数据框中的每个数字除以每列的特定数字。这些数字存储为数据帧,其中 1-16 对应于较大数据帧列 1-16 中的样本。每列有一个数字,我需要将其除以较大电子表格中的每个数字,并将输出打印到最终电子表格。

这是我开始的示例。要划分的电子表格。

            X131.478.1 X131.478.2 X131.NSC.1 X131.NSC.2 X166.478.1 X166.478.2
1/2-SBSRNA4 4 2 2 6 7 6
A1BG 93 73 88 86 58 65
A1BG-AS1 123 103 96 128 46 57

电子表格除以的数字

X131.478.1 1.0660880
X131.478.2 0.9104053
X131.NSC.1 0.8642545
X131.NSC.2 0.9611866
X166.478.1 0.9711406
X166.478.2 1.0560121

预期结果不一定像我在这里所做的那样四舍五入。

    X131.478.1 X131.478.2 X131.NSC.1 X131.NSC.2 X166.478.1 X166.478.2
1/2-SBSRNA4 3.75 2.19 2.31 6.24 7.20 5.68
A1BG 87.23 80.17 101.82 89.47 59.72 61.55
A1BG-AS1 115.37 113.13 111.07 133.16 47.36 53.97

我尝试简单地划分数据帧 mx2 = mx/sf,其中 mx 是大数据集,sf 是要除以的数字的数据帧。这似乎将所有内容除以 sf 数据集中的第一个数字。

除法的数字是由estimateSizeFactors生成的,它是DESeq包的一部分(如果有帮助的话)。

任何帮助都会很棒。谢谢!

最佳答案

sweep 对于此类操作很有用,但它需要一个矩阵作为输入。因此,将数据帧转换为矩阵,进行运算,然后再转换回来。例如,一些虚拟数据,我们将矩阵 mat 相应列中的每个元素除以向量 vec 中的相应值:

mat <- matrix(1:25, ncol = 5)
vec <- seq(2, by = 2, length = 5)

sweep(mat, 2, vec, `/`)

在使用中我们有:

> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2 7 12 17 22
[3,] 3 8 13 18 23
[4,] 4 9 14 19 24
[5,] 5 10 15 20 25
> vec
[1] 2 4 6 8 10
> sweep(mat, 2, vec, `/`)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.5 1.50 1.833333 2.000 2.1
[2,] 1.0 1.75 2.000000 2.125 2.2
[3,] 1.5 2.00 2.166667 2.250 2.3
[4,] 2.0 2.25 2.333333 2.375 2.4
[5,] 2.5 2.50 2.500000 2.500 2.5
> mat[,1] / vec[1]
[1] 0.5 1.0 1.5 2.0 2.5

要从数据帧进行转换,请使用 as.matrix(df)data.matrix(df) 以及 as.data.frame(mat) 则相反。

关于r - 将每个数据框行除以R中的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830979/

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