Dplyr мутировать много столбцов с каждым новым столбцом условно на два столбца - PullRequest
1 голос
/ 20 мая 2019

Мой фрейм данных похож на простой ниже, с большим количеством столбцов и строк.

Моя цель - добавить новый столбец для каждой "модели" на основе некоторого вывода 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, как указано выше.

Большое спасибо за вашу помощь!Это первый вопрос, который я когда-либо написал, позвольте мне сейчас, если мне нужно переформулировать что-то / пропустить что-то или не определить эту проблему, если она уже существует / и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...