#r
Вопрос:
Поэтому я недавно начал писать код в целом, и я застрял здесь на несколько дней.
В простом масштабе у меня есть два кадра данных, и практически все, что мне нужно сделать, это
(moduletotals$Freq[3] - totals_df$Freq[1])
вычитание всего модуля darkorange, кластера 1 из частоты «биосинтеза 2′-дезоксирибонуклеотидов» в кластере 1 модуля darkorange для каждой строки totals_df
.
но у меня так много данных, что мне нужно построить цикл, функцию или что-то в этом роде, где функция может найти частоту всего рассматриваемого модуля и кластера из отдельного образца. Что-то в этом роде
> moduletotals$module == totals_df$module amp;
moduletotals$cluster == totals_df$cluster
выведите freq
найденную строку и вычтите ее из частоты рассматриваемой строки totals_df
и я здесь совершенно потерялся.
модульные итоги
модуль | скопление | Част. |
---|---|---|
темно-зеленый | 1 | 12 |
темно-серый | 1 | 408 |
даркоранж | 1 | 355 |
даркред | 1 | 11 |
темно-синий | 1 | 12 |
Серый | 1 | 22 |
итоговые_df
Описание класса | модуль | скопление | Част. |
---|---|---|---|
биосинтез 2′-дезоксирибонуклеотидов | даркоранж | 1 | 1 |
биосинтез 2′-дезоксирибонуклеотидов | темно-серый | 2 | 1 |
биосинтез 2′-дезоксирибонуклеотидов | даркоранж | 2 | 3 |
Адаптации и нетипичные условия | даркоранж | 1 | 1 |
Адаптации и нетипичные условия | темно-серый | 2 | 1 |
Аэробный | темно-серый | 1 | 4 |
Аэробный | даркоранж | 1 | 3 |
Аэробный | серый 60 | 1 | 2 |
Аэробный | светловолосый | 1 | 3 |
Аэробный | королевский блю | 1 | 1 |
Ответ №1:
Вы можете делать left_join
между таблиц данных:
library(tidyverse)
module <- data.frame(
stringsAsFactors = FALSE,
module = c(
"darkgreen",
"darkgrey",
"darkorange",
"darkred",
"darkturquoise",
"grey"
),
cluster = c(1L, 1L, 1L, 1L, 1L, 1L),
freq = c(12L, 408L, 355L, 11L, 12L, 22L)
)
totals <- data.frame(
stringsAsFactors = FALSE,
class_description = c(
"Adaptions and atypical conditions",
"Adaptions and atypical conditions",
"Aerobic",
"Aerobic",
"Aerobic",
"Aerobic",
"Aerobic"
),
module = c(
"darkorange",
"darkgrey",
"darkgrey",
"darkorange",
"grey60",
"lightyellow",
"royalblue"
),
cluster = c(1L, 2L, 1L, 1L, 1L, 1L, 1L),
freq = c(1L, 1L, 4L, 3L, 2L, 3L, 1L)
)
totals %>%
left_join(module,
by = c("module", "cluster")) %>%
replace_na(list(freq.y = 0))
#> class_description module cluster freq.x freq.y
#> 1 Adaptions and atypical conditions darkorange 1 1 355
#> 2 Adaptions and atypical conditions darkgrey 2 1 0
#> 3 Aerobic darkgrey 1 4 408
#> 4 Aerobic darkorange 1 3 355
#> 5 Aerobic grey60 1 2 0
#> 6 Aerobic lightyellow 1 3 0
#> 7 Aerobic royalblue 1 1 0
module %>%
left_join(
totals %>%
group_by(module, cluster) %>%
summarise(freq = sum(freq),
.groups = "drop"),
by = c("module", "cluster")
) %>%
replace_na(list(freq.y = 0))
#> module cluster freq.x freq.y
#> 1 darkgreen 1 12 0
#> 2 darkgrey 1 408 4
#> 3 darkorange 1 355 4
#> 4 darkred 1 11 0
#> 5 darkturquoise 1 12 0
#> 6 grey 1 22 0
Комментарии:
1. Огромное спасибо. Это очень помогло, иногда вам нужна только другая перспектива