#r #genetics
#r #генетика
Вопрос:
Таблица, показывающая правильный формат данных У меня есть фрейм данных с четырьмя столбцами, и мне нужно найти способ суммировать значения в третьем столбце. Только если числа в первых двух столбцах разные. Единственный способ, который я могу придумать, это, возможно, выполнить If
цикл? Это что-то можно сделать или есть лучший способ?
Genotype summary`
Dnov1a Dnov1b Freq rel_geno_freq
1 220 220 1 0.003367003
7 220 224 4 0.013468013
8 224 224 8 0.026936027
13 220 228 14 0.047138047
Это часть данных в качестве примера, мне нужно суммировать третий столбец Freq
для строк 7 и 13, потому что они разные.
Комментарии:
1. Не очень понятно, какой ожидаемый результат. Можете ли вы поделиться ожидаемым результатом?
Ответ №1:
Вот tidyverse
способ сделать это:
library(tidyverse)
data <- tribble(
~Dnov1a, ~Dnov1b, ~Freq, ~rel_geno_freq,
220, 220, 1, 0.003367003,
220, 224, 4, 0.013468013,
224, 224, 8, 0.026936027,
220, 228, 14, 0.047138047)
data %>%
mutate(filter_column = if_else(Dnov1a != Dnov1b, TRUE, FALSE)) %>%
filter(filter_column == TRUE) %>%
summarise(Total = sum(Freq))
# A tibble: 1 x 1
Total
<dbl>
1 18
Ответ №2:
data$new = data$Dnov1a!=data$Dnov1b
data
Dnov1a Dnov1b Freq rel_geno_freq new
<int> <int> <int> <dbl> <lgl>
1 220 220 1 0.00337 TRUE
2 220 224 4 0.0135 FALSE
3 224 224 8 0.0269 TRUE
4 220 228 14 0.0471 FALSE
sum(data$Freq[data$new])
28
Это то, что вы ищете?
Комментарии:
1. Что-то в этом роде, да. Хотя я допустил ошибку в своем сообщении. Я имею в виду для тех, которые отличаются.
2. просто изменен
==
на!=