J'essaie de calculer la moyenne de deux variables et de la sortir en tant que nouvelle variable. Par exemple:
data$Average <- (data$Visit1 + data$Visit2) / 2
3 Réponses :
Voici une autre option pour votre question modifiée en utilisant dplyr :: Case_Quend Code> Pour filtrer les possibilités: library(dplyr)
data$Average <- case_when(!is.na(data$Visit1) & !is.na(data$Visit2) ~
(data$Visit1 + data$Visit2) / 2,
!is.na(data$Visit3) & !is.na(data$Visit4) ~
(data$Visit3 + data$Visit4) / 2,
TRUE ~ (data$Visit1 + data$Visit2) / 2)
Un bon moyen de faire plusieurs Les avantages à cette approche sont les suivants: a) utilise < Code> Tairyverse Code> et applicable à de nombreux cas de multiples Plus documentation sur ifelse code> est avec cas_quive code> Ifelse code> Les instructions, b) sont faciles à comprendre lorsque vous revenez au code ultérieurement, c) utilisez NA si certaines lignes ne satisfont pas votre Conditions (c.-à-d. True ~ na) p> Case_Quend code> est ici: https://dplyr.tidyver.org/reference/case_when.html p> p>
Vous pouvez utiliser coalesce () code> à partir de dplyr code>. coalesce () code> utilisera la première valeur non manquante à chaque position. Je pense que cela a une meilleure lisibilité que ifelse () code> ou cas_quive () code>. data %>%
mutate(
Average = coalesce(
as.numeric((data$Visit1 + data$Visit2) / 2),
as.numeric((data$Visit3 + data$Visit4) / 2),
as.numeric((data$Visit5 + data$Visit6) / 2)
)
)
J'utiliserais
RowMeans (données [C ("visiter1", "visiter2")], na.rm = true) code>Cela malheureusement ne répond pas à ma question.