Интерполируя, но фиксируя диапазон в R - PullRequest
0 голосов
/ 06 февраля 2020

Я получаю некоторые экстремальные значения в начале и в конце при интерполяции.

Фактически, последние значения b не должны превышать max (b) , а первые значения должны быть не менее 0 .

пример данных:

a<-c(1, 3, 4, 6, 8.7, 9, 10, 12, 19.3, 20)
b<-c(10, 30, 40, 60, 87, 90, 100, 120, 190, 200)
df<-data.frame(a=a, b=b)
> df
      a   b
1   1.0  10
2   3.0  30
3   4.0  40
4   6.0  60
5   8.7  87
6   9.0  90
7  10.0 100
8  12.0 120
9  19.3 190
10 20.0 200

Это код, который я сейчас использую:

Hmisc::approxExtrap(df$a, df$b, xout = c(0:25))

1 Ответ

2 голосов
/ 06 февраля 2020

Оберните это в pmin и pmax:

pmin(max(df$b), pmax(min(df$b), approxExtrap(df$a, df$b, xout = c(0:25))))

Это сохранит верхнюю и нижнюю границы b. Если вы хотите заменить нижнюю границу b (в настоящее время 1) на 0, замените min(df$b) на 0.

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