我正在研究R中的代谢组学数据集。
我需要两件事的帮助: 1)将特定列(化合物/代谢物)中的每个NA值替换为代谢物的最低测量值(在同一列中)。
2)找到每一列(化合物/代谢物)的中值,然后将同一列中的每个观察值除以该值。我们只需要对照7:10,的中位数,但最终将测量值除以列中所有观察的值,健康对照和疾病对照均除以该值。
我在这里放了我的数据集1:10,1:10的一个小样本,这样您就可以了解我正在使用的是什么:
DF = structure(c(1860651, 1337891, 2798250, 3346226, 1573569, 1617225,
2165432, 1810660, 2959953, 1646724, 131017, 84179, NA, 319922,
146119, 144214, 293748, 115225, 91870, 251489, 151948, 45234,
NA, 272300, 148625, 148467, 281923, 104149, 73209, 309631, 503723,
335152, 204554, 1085158, 402338, 573637, 1326537, 476902, 320715,
1054230, 73001, NA, NA, 134919, 41893, 60296, 172660, 46089,
NA, 113501), .Dim = c(10L, 5L), .Dimnames = list(c("M_1", "M_2",
"M_3", "M_4", "M_5", "M_6", "M_7", "M_8", "M_9", "M_10"), c("(N(1) + N(8))-acetylspermidine",
"1-carboxyethylisoleucine", "1-carboxyethylleucine", "1-carboxyethylphenylalanine",
"1-carboxyethyltyrosine")))提前感谢您的帮助:)
发布于 2019-03-13 01:50:07
这能达到你想要的效果吗?
temp <- DF
temp[is.na(temp)] <- 0
newDF <- temp + is.na(DF)*apply(DF,2,min, na.rm=T)
apply(newDF,2,function(x) {x/median(x[7:10])})以下是运行以下命令后的输出
(N(1) + N(8))-acetylspermidine 1-carboxyethylisoleucine 1-carboxyethylleucine 1-carboxyethylphenylalanine 1-carboxyethyltyrosine
M_1 0.9359195 0.7145459 0.7871485 0.6579746 0.5102093
M_2 0.6729678 0.4590989 0.2343293 0.4377833 0.5883331
M_3 1.4075379 0.2466991 0.2343293 0.2671932 0.3161437
M_4 1.6831733 1.7448039 1.4106177 1.4174585 0.9429587
M_5 0.7915154 0.7969099 0.7699341 0.5255432 0.2927932
M_6 0.8134746 0.7865203 0.7691156 0.7492979 0.4214131
M_7 1.0892263 1.6020550 1.4604685 1.7327533 1.2067333
M_8 0.9107737 0.6284189 0.5395315 0.6229404 0.3221194
M_9 1.4888755 0.5010444 0.3792505 0.4189253 1.4296428
M_10 0.8283128 1.3715811 1.6040065 1.3770596 0.7932667https://stackoverflow.com/questions/55127419
复制相似问题