Как фильтровать по двум последним десятичным числам в r? - PullRequest
0 голосов
/ 24 февраля 2019

Я хотел бы отфильтровать кадр данных на основе двух последних десятичных знаков в определенном столбце.Итак, данные выглядят примерно так:

     [91] 22.6300 22.6300 22.6700 22.6200 22.6700 22.6200 22.6400 22.6600 22.6600
    [100] 22.6600 22.6800 22.6800 22.6800 22.6800 22.6600 22.6700 22.7000 22.7000
    [109] 22.7000 22.7200 22.6800 22.7000 22.6800 22.6900 22.7000 22.6975 22.7000
    [118] 22.6900 22.6900 22.7000 22.6800 22.7200 22.7200 22.7200 22.7200 22.7400
    [127] 22.7500 22.7500 22.7500 22.7500 22.7200 22.7528 22.7210 22.7500 22.7500
    [136] 22.7210 22.7210 22.7402 22.7200 22.7300 22.7700 22.7500 22.8100 22.8100
    [145] 22.8100 22.8100 22.8100 22.8100 22.8000 22.8000 22.8000 22.8000 22.7850
    [154] 22.8000 22.7900 22.8000 22.8000 22.8000 22.8000 22.8000 22.8000 22.8011

Допустим, имя столбца PRICE в my_data dataframe.Как я могу фильтровать по последнему десятичному знаку в столбце ЦЕНА?Конечная цель - получить массив данных с десятичным числом от 0,0001 до 0,0010.Например:

   22.6975 22.7528 22.7210 22.7402 22.8011

Должен быть включен в мой отфильтрованный фрейм данных, потому что они заканчиваются на 5, 8, 10, 2 и 1 соответственно.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Вы также можете попробовать это:

deciRule <- 0.4

x[(x %% 1) < deciRule]

[1] 22.02223 22.23572

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

set.seed(42)
x <- 22 + runif(10)
[1] 22.81985 22.53936 22.49902 22.02223 22.55409
[6] 22.71990 22.23572 22.81188 22.42147 22.56491
0 голосов
/ 24 февраля 2019

Я бы извлек десятичную часть ваших значений и создал бы логическое значение для этого.Вот одно из решений:

#make random numbers that roughly match OPs
set.seed(42)
x <- 22 + runif(1000)
decs <- (x - floor(x))
x[decs > 0.0001 & decs < 0.0010]
#> [1] 22.00024 22.00041

Создано в 2019-02-23 с помощью пакета представительства (v0.2.1)

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