In my data
below, I want to replace only the NONE NA values of column yi
whose index are given by ind
by Tuke_max
value, is this possible (leaving the NA values untouched)?
Fully reproducible code is below.
data <- read.csv("https://raw.githubusercontent.com/ilzl/i/master/j.csv")
first_third_QR <- with(data, fivenum(yi, na.rm = TRUE))[c(2,4)]
inter_QR <- with(data, IQR(yi, na.rm = TRUE))
Tukey_min <- first_third_QR[1] - (3 * inter_QR )
Tukey_max <- first_third_QR[2] (3 * inter_QR )
ind <- with(data, yi < Tukey_min | yi > Tukey_max)
( yi_vec <- with(data, yi[ind]) ) # Replace the none NA `yi` values below in the `data`
# with Tukey_max (leave NAs untouched)
#[1] 4.122057 3.457194 3.071523 3.545027 4.454427 NA NA NA
#[9] NA NA NA NA NA NA NA 4.119231
#[17] 3.977800 6.412906
CodePudding user response:
Two things need to be done, to get the conjuntion of ind
with the non NA
and to index by numeric values in order to not have NA
's as indices.
A one-liner will do it.
data$yi[ which(ind & !is.na(data$yi)) ] <- Tukey_max