gpt4 book ai didi

r - 如何将每列除以 R 中的数字?

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

我有一个包含 6000 列是基因名称的数据集。它有 6 个不同的特征 A、B、C、D、E、F,具有唯一的位置编号。我想将具有特征 A 的列除以 87,将具有特征 B 的列除以 54。

最后,我想在新列中获得每行的总和和平均值。
我怎么能在R中做到这一点?

feature_A=87
feature_B=54

输入文件
 feature pos gene_1 gene_2 gene_3 gene_n
A 1 6 2 51 0
A 2 4 5 8 2
A 3 1 74 5 0
B 1 11 2 41 89
B 2 4 5 3 5

输出文件
 feature pos gene_1 gene_2 gene_3 gene_n  sum_all  average_all
A 1 6/87 2/87 51/87 0/87 sum_row1 average_row1
A 2 4/87 5/87 8/87 2/87 sum_row2 average_row2
A 3 1/87 74/87 5/87 0/87 sum_row3 average_row3
B 1 11/54 2/54 41/54 89/54 sum_row4 average_row4
B 2 4/54 5/54 3/54 5/54 sum_row5 average_row5
B 3 4/54 0/54 5/54 21/54 sum_row6 average_row6

最佳答案

通过将除数合并到主数据集中,这可能会更容易:

feat_div <- data.frame(feature=c("A","B"), value=c(87,54))
# feature value
#1 A 87
#2 B 54

cols <- grepl("^gene_", names(dat))

dat <- merge(dat, feat_div)

dat[cols] <- lapply(dat[cols], `/`, dat$value)
dat$sum_all <- rowSums(dat[cols])
dat$average_all <- rowMeans(dat[cols])

# feature pos gene_1 gene_2 gene_3 gene_n value sum_all average_all
#1 A 1 0.06896552 0.02298851 0.58620690 0.00000000 87 0.6781609 0.1695402
#2 A 2 0.04597701 0.05747126 0.09195402 0.02298851 87 0.2183908 0.0545977
#3 A 3 0.01149425 0.85057471 0.05747126 0.00000000 87 0.9195402 0.2298851
#4 B 1 0.20370370 0.03703704 0.75925926 1.64814815 54 2.6481481 0.6620370
#5 B 2 0.07407407 0.09259259 0.05555556 0.09259259 54 0.3148148 0.0787037

关于r - 如何将每列除以 R 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015632/

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