Вы используете seq
или оператор двоеточия :
для создания своих выборок, что означает, что вы производите выборку из следующей последовательности:
seq(10.2354897, 23.78954214)
# [1] 10.23549 11.23549 12.23549 13.23549 14.23549 ....
Таким образом, начальное значение увеличивается на 1 на каждом шаге, оставляя цифры после запятой фиксированными.
Если вы хотите выбрать случайное число в диапазоне этих двух пределов, вы можете сделать:
runif(n = 1, min = 10.2354897, max = 23.78954214)
Так что для вашего примера это означает:
df_LT$ATC[is.na(df_LT$ATC)] <-
runif(n = sum(is.na(df_LT$ATC)), 10.2354897, 23.78954214)
Если вы хотите добавить условие, вы можете выполнить:
df_LT$ATC <-
ifelse(is.na(df_LT$ATC) & df_LT$A == 3,
runif(n = nrow(df_LT), 10.2354897, 23.78954214),
df_LT$ATC)
Это проверяет, отсутствует ли ATC, а также равно ли A 3. Если это выполняется, отсутствующее значение заменяется случайным числом, в противном случаевозвращается оригинальное значение (пропущено или нет).