Я пытаюсь вернуться к некоторому более старому коду, в котором я использовал a для l oop для расчета комбинированного ранжирования генов на основе двух столбцов. Моя конечная цель - получить столбец, в котором указана доля генов, с которыми любой конкретный ген в наборе данных работает лучше, чем.
У меня есть data.frame, который я называю оценками, который содержит два столбца соответствующих баллы по моим генам. Чтобы вычислить комбинированный рейтинг, я использую следующее для l oop и вычисляю пропорциональную оценку путем деления полученного ранга на общее количество наблюдений.
scores <- data.frame(x = c(0.128, 0.279, 0.501, 0.755, 0.613), y = c(1.49, 1.43, 0.744, 0.647, 0.380))
#Calculate ranking
comb.score = matrix(0, nrow = nrow(scores), ncol = 1)
for(i in 1:nrow(scores)){
comb.score[i] = length(which(scores[ , 1] < scores[i, 1] & scores[ , 2] < scores[i, 2]))
}
comb.score <- comb.score/length(comb.score) #Calculate proportion
Теперь, когда я стал более знакомым и удобно с tidyverse. Я хочу преобразовать этот код для использования функций tidyverse, но я не смог разобраться в этом самостоятельно или с ответами сообщества SO или RStudio.
Я имел в виду идею использовать mutate()
вместе с min_rank()
, но я не совсем уверен в синтаксисе. Кроме того, поведение min_rank()
, по-видимому, оценивает рейтинг с помощью логического теста, такого как scores[ , 1] <= scores[i, 1]
, в отличие от простого использования <, как я делал в моем первоначальном тесте. </p>
Мой ожидаемый результат - это дополнительный столбец в таблице scores
, который имеет тот же результат, что и результат comb.score
в приведенном выше коде: оценка, которая сообщает мне долю генов во всем наборе данных, которые ген в данной строке работает лучше, чем.
Любая помощь будет принята с благодарностью! Если мне нужно что-то уточнить или добавить дополнительную информацию, дайте мне знать!