Как заменить наименьшее значение в каждом столбце как значение n - PullRequest
0 голосов
/ 12 марта 2019

Я работаю над набором данных метаболомики в R.

Мне нужна помощь с двумя вещами: 1) Заменить каждое значение NA в определенном столбце (соединение / метаболит) на самое низкое измеренное значение для метаболита (в том же столбце).

2) Найдите медианное значение для каждого столбца (соединение / метаболит) и затем разделите каждое наблюдение в одном столбце на это значение.Нам нужно только среднее значение для контролей [7:10,] (строки с 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")))

Заранее благодарю за помощь:) * +1010 *

1 Ответ

1 голос
/ 12 марта 2019

Достигает ли это того, чего вы хотите?

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.7932667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...