Вычислить соотношение каждые две строки с частичным совпадением строки

Я пытаюсь рассчитать соотношение, используя эту формулу: log2(_5p/3p).

У меня есть фрейм данных в R, и записи имеют одно и то же имя, за исключением их последней части, которая будет либо _3p, либо _5p. Я хочу выполнить эту операцию log2(_5p/_3p) для каждого конкретного имени.

Например, для первых двух строк результат будет таким:

LQNS02277998.1_30988 log2 (40/148) = -1,887525

В идеале я хочу создать новый фрейм данных с результатами, в которых сохраняется только общая часть имени.

LQNS02277998.1_30988 -1.887525

Как я могу сделать это в R?

> head(dup_res_LC1_b_2)
# A tibble: 6 x 2
  microRNAs                                  n
  <chr>                                  <int>
1 LQNS02277998.1_30988_3p                  148
2 LQNS02277998.1_30988_5p                   40
3 Dpu-Mir-279-o6_LQNS02278070.1_31942_3p     4
4 Dpu-Mir-279-o6_LQNS02278070.1_31942_5p     4
5 LQNS02000138.1_777_3p                     73
6 LQNS02000138.1_777_5p                     12


structure(list(microRNAs = c("LQNS02277998.1_30988_3p", 
"LQNS02277998.1_30988_5p", "Dpu-Mir-279-o6_LQNS02278070.1_31942_3p", 
"Dpu-Mir-279-o6_LQNS02278070.1_31942_5p", "LQNS02000138.1_777_3p", 
"LQNS02000138.1_777_5p"), n = c(148L, 40L, 4L, 4L, 73L, 12L)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мы можем использовать группу по операции, удалив подстроку в конце, то есть _3p или _5p с str_remove, а затем использовать log деление пары «n»

library(dplyr)
library(stringr)
df1 %>% 
   group_by(grp = str_remove(microRNAs, "_[^_]+$")) %>% 
   mutate(new = log2(last(n)/first(n)))

Спасибо, как всегда восхитительно!

Amaranta_Remedios 18.12.2020 19:18

Другие вопросы по теме