Мой фрейм данных похож на простой ниже, с большим количеством столбцов и строк.
Моя цель - добавить новый столбец для каждой "модели" на основе некоторого вывода ifelse () с использованием соответствующего pval и value_IC столбец.
Здесь модели являются линейными, бета и emax.
Самая близкая проблема, которую я обнаружил, была здесь
https://community.rstudio.com/t/how-to-mutate-at-mutate-if-multiple-columns-using-condition-on-other-column-outside-vars-dplyr/17506/2
, где всегда используется один и тот же «второй» столбец.
data <- data.frame(pval.linear.orig = c(0.01, 0.06, 0.02),
pval.beta.orig = c(0.06, 0.02, 0.01),
pval.emax.orig = c(0.03, 0.01, 0.07),
value_IC.linear.orig = c(-5, NA, -4),
value_IC.beta.orig = c(NA, NA, -10),
value_IC.emax.orig = c(NA, -11, NA))
pval.linear.orig pval.beta.orig pval.emax.orig value_IC.linear.orig value_IC.beta.orig value_IC.emax.orig
1 0.01 0.06 0.03 -5 NA NA
2 0.06 0.02 0.01 NA NA -11
3 0.02 0.01 0.07 -4 -10 NA
Если бы я хотел его только для одной модели, скажем, бета, я бы сделал это:
library(dplyr)
data_new <- data %>% mutate(conv.beta.orig = case_when(
pval.beta.orig > 0.025~ NA,
pval.beta.orig <= 0.025 & !(is.na(value_IC.beta.orig)) ~ TRUE,
pval.beta.orig <= 0.025 & is.na(value_IC.beta.orig) ~ FALSE))
data_new
pval.linear.orig pval.beta.orig pval.emax.orig value_IC.linear.orig value_IC.beta.orig value_IC.emax.orig conv.beta.orig
1 0.01 0.06 0.03 -5 NA NA NA
2 0.06 0.02 0.01 NA NA -11 FALSE
3 0.02 0.01 0.07 -4 -10 NA TRUE
, чтобы получить столбец conv.beta.orig .Имя столбца не обязательно должно быть точно в этом формате.
Моя проблема сейчас заключается в том, чтобы сделать это со всеми моими моделями, используя столбцы pval.MODEL.orig и value_IC.MODEL.orig, как указано выше.
Большое спасибо за вашу помощь!Это первый вопрос, который я когда-либо написал, позвольте мне сейчас, если мне нужно переформулировать что-то / пропустить что-то или не определить эту проблему, если она уже существует / и т.д.