Фильтровать фрейм данных по заданным c значениям R - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы применить фильтр к моему фрейму данных R. Я хочу выбрать строки, значение которых удовлетворяет следующему условию: 2 ^ n = целочисленное значение Пример. Это мой фрейм данных

pais    entidad    time_cases     v_doublingTimes
Mex      Mexico      0                  1
Mex      Mexico      1                  1.1892
Mex      Mexico      2                  1.4142
Mex      Mexico      3                  1.68
Mex      Mexico      4                  2
Mex      Mexico      5                  2.37
Mex      Mexico      6                  2.828427
Mex      Mexico      6                  3.34
Mex      Mexico      6                  4
...

Как видите, я хочу сохранить только строки, значение которых является целым числом. Мне просто нужны строки, где их значение в v_doublingTimes равно 1, 2 и 4. Я пробовал с этим:

df$v_doublingTimes %% 1 

Это, чтобы узнать, есть ли у меня целочисленные значения. Если я получаю 1, я знаю, что это целочисленное значение, но я не знаю, почему это не работает. Тип значения строки v_doublingTimes - float. Есть ли другой способ отфильтровать мой фрейм данных и просто сохранить строки, где 2 ^ n? n = 0,1,2,3 ... до длины моего df.

1 Ответ

0 голосов
/ 26 мая 2020

df$v_doublingTimes %% 1 дает остаток при делении на 1

df$v_doublingTimes %% 1
#[1] 0.000 0.189 0.414 0.680 0.000 0.370 0.828 0.340 0.000

Вам нужно выбрать только строки, в которых остаток равен 0, так что сделайте:

subset(df, v_doublingTimes %% 1 == 0)

#  pais entidad time_cases v_doublingTimes
#1  Mex  Mexico          0               1
#5  Mex  Mexico          4               2
#9  Mex  Mexico          6               4

Другие способы сделать то же самое:

df[df$v_doublingTimes %% 1 == 0, ]
dplyr::filter(df, v_doublingTimes %% 1 == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...