0

R を使用して、2 つの行 (i+1) と i の差が 1 以下の場合、「ノード」=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 を含む、2 つの連続する行の差です。また、node は、diff <=1 の場合は最初の相違に対して 1 であり、それ以外の場合は diff<=1 までは 2 です。diff>1 の場合、node=3 など。

できるだけわかりやすく説明するように努めましたが、わかりにくかったら申し訳ありません。

4

1 に答える 1

2

あなたのdata.frameが呼ばれると仮定して、これを試してくださいdat

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
于 2013-09-13T01:58:08.067 に答える