R 基于列值筛选数据帧

R 基于列值筛选数据帧,r,filter,integer,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
中的整数值筛选数据帧:

      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

我们可以检查这些值除以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)

dat我们可以检查值除以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)
dat如果您对列
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
如果您对列
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
with(dat,dat[as.integer(v)=v,])
分别
dat[as.integer(dat$v)==dat$v,])
with(dat,dat[as.integer(v)==v,])
分别
dat[as.integer(dat$v)==dat$v,])