根据列值过滤数据框

时间:2018-02-01 14:10:57

标签: r filter integer

我想根据第一列v中的整数值过滤我的数据框:

      v P_el
1   2.5    0
2   3.0   78
3   3.5  172
4   4.0  287
5   4.5  426
6   5.0  601
7   5.5  814
8   6.0 1069
9   6.5 1367
10  7.0 1717
11  7.5 2110
12  8.0 2546
13  8.5 3002
14  9.0 3427
15  9.5 3751
16 10.0 3922

输出应如下所示:

    v P_el
2   3   78
4   4  287
6   5  601
8   6 1069
10  7 1717
12  8 2546
14  9 3427
16 10 3922

2 个答案:

答案 0 :(得分:3)

我们可以检查除以1的值是否余数为0。

dat[dat$v %% 1 == 0, ]
    v P_el
2   3   78
4   4  287
6   5  601
8   6 1069
10  7 1717
12  8 2546
14  9 3427
16 10 3922

数据

dat <- read.table(text = "      v P_el
1   2.5    0
                  2   3.0   78
                  3   3.5  172
                  4   4.0  287
                  5   4.5  426
                  6   5.0  601
                  7   5.5  814
                  8   6.0 1069
                  9   6.5 1367
                  10  7.0 1717
                  11  7.5 2110
                  12  8.0 2546
                  13  8.5 3002
                  14  9.0 3427
                  15  9.5 3751
                  16 10.0 3922",
                  header = TRUE)

答案 1 :(得分:0)

如果您对列seq( )中的序列有所了解,可以使用v函数

  dat
  #       v P_el
  # 1   2.5    0
  # 2   3.0   78
  # 3   3.5  172
  # 4   4.0  287
  # 5   4.5  426
  # 6   5.0  601
  # 7   5.5  814
  # 8   6.0 1069
  # 9   6.5 1367
  # 10  7.0 1717
  # 11  7.5 2110
  # 12  8.0 2546
  # 13  8.5 3002
  # 14  9.0 3427
  # 15  9.5 3751
  # 16 10.0 3922


  dat[seq(2,16,by = 2),]
  #     v P_el
  # 2   3   78
  # 4   4  287
  # 6   5  601
  # 8   6 1069
  # 10  7 1717
  # 12  8 2546
  # 14  9 3427
  # 16 10 3922