У х округлить до ближайшего указанного числа c значение из серии? - PullRequest
1 голос
/ 02 апреля 2020

Хотите знать, как x может округляться до ближайшего значения ниже, основываясь на отдельной цифре c серии (y). Это то, что я имел в виду.

Скажем, х через 5 с

> y
[1]  5 10 15 20 25 30 35 40 45

А у другого объекта равно

> x
[1] 39

Я бы хотелось бы видеть его округленным до ближайшего нижнего указанного значения от y

> x
[1] 35

Ответы [ 2 ]

4 голосов
/ 02 апреля 2020

Вы можете использовать% /% и умножить его на y (если вы укажете y равным вашему кратному, например, если 5):

y <- 5
x <- 39
(x %/% y) * y

Если вы должны использовать вектор длины> 1 для y тогда вы можете использовать несколько различных функций, таких как max() или tail(..., 1), чтобы получить наибольшее или последнее значение в y:

y <- seq(0, 50, 5)
tail(y[x > y], 1)
max(y[x > y])

Обратите внимание, что x > y создает логический вектор, который используется для линейный поиск, который возвращает вектор значений y, меньших x, и передает его функции.

2 голосов
/ 02 апреля 2020

Вы можете использовать findInterval / cut

y <- seq(5, 45, 5)
x <- 39
y[findInterval(x, y)]
#[1] 35

С cut:

y[cut(x, y, labels = FALSE)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...