按特定值R过滤数据帧

时间:2020-05-26 02:10:18

标签: r database dataframe validation data-science

我想在我的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 :(得分:0)

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)