用常量替换数据框中列的非 NA 值
Replace non NA values of a column in a dataframe with a constant
在下面的 data
中,我只想替换 yi
列的 NONE NA 值,其索引由 ind
通过 Tuke_max
值,这可能吗(保持 NA 值不变)?
下面是完全可重现的代码。
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
需要做两件事,获得 ind
与非 NA
的连接,并按数值索引,以免 NA
作为索引.
一条线就可以做到。
data$yi[ which(ind & !is.na(data$yi)) ] <- Tukey_max
在下面的 data
中,我只想替换 yi
列的 NONE NA 值,其索引由 ind
通过 Tuke_max
值,这可能吗(保持 NA 值不变)?
下面是完全可重现的代码。
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
需要做两件事,获得 ind
与非 NA
的连接,并按数值索引,以免 NA
作为索引.
一条线就可以做到。
data$yi[ which(ind & !is.na(data$yi)) ] <- Tukey_max