0

我想使用 R 根据每个项目与它之前和之后的连续项目的距离为数据表生成索引列 (i):

  1. 如果 x 与前一个值相比 >10,但与下一个值相比 <10,则将其分配为“开始”
  2. 如果 x 与前一个值相比 >10,并且与下一个值相比 >10,则将其分配为“单独”
  3. 如果 x 与前一个值相比 <10,但与下一个值相比 >10,则将其分配为“end”
  4. 如果 x 与前一个值相比 <10,并且与下一个值相比 <10,则将其分配为“中间”

例如,如果名为“x”的列读取 - 1,3,14,25,26,27,31,46....

生成的索引列将显示:i = start,end,lone,start,middle,middle,end,start...

有谁知道将 > 或 < 10 的“距离参数”指向仅高于或低于自身的值的好方法?

4

1 回答 1

1

您可以使用diff(获取连续元素之间的距离)以及headtail

before = head(diff(x), -1)
after = tail(diff(x), -1)
result = ifelse(before < 10, ifelse(after < 10, "start", "end"), ifelse(after < 10, "middle", "lone"))
于 2013-01-11T18:01:03.370 回答