R有所不同

R有所不同,r,R,我试图使用R返回一些值,例如,如果两行(I+1)和I之间的差值小于或等于1,那么“node”=1。 我的数据如下所示: id x y 1 7 1 2 7 2 3 7 2 4 7 4 5 7 5 6 7 7 7 7 8 8 7 10 9 7 1

我试图使用R返回一些值,例如,如果两行(I+1)和I之间的差值小于或等于1,那么“node”=1。 我的数据如下所示:

   id   x        y
   1    7        1
   2    7        2
   3    7        2
   4    7        4
   5    7        5
   6    7        7
   7    7        8
   8    7        10
   9    7        10
  10    7        12
我想得到:

   id   x        y  diff  node
   1    7        1  0     1
   2    7        2  1     1
   3    7        2  1     1
   4    7        4  2     2
   5    7        5  1     2
   6    7        7  2     3
   7    7        8  1     3
   8    7        10 2     4
   9    7        10 0     4
  10    7        12 2     5

上面,diff是两个连续行之间的差值,包括第1行和第1行的差值=0。如果diff尝试此操作,假设您的data.frame被称为
dat
,则第一个差异的节点为1:

dat$node <- c(0,cumsum(diff(dat$y)>1))+1
dat$diff <- c(0,ifelse(diff(dat$y)>1,2,1))

非常感谢你!那很好用。如何获取差异列?
> dat
   id x  y node diff
1   1 7  1    1    0
2   2 7  2    1    1
3   3 7  2    1    1
4   4 7  4    2    2
5   5 7  5    2    1
6   6 7  7    3    2
7   7 7  8    3    1
8   8 7 10    4    2
9   9 7 10    4    1
10 10 7 12    5    2