如何标记r中的非顺序数字

  • 本文关键字:顺序 数字 何标记 r
  • 更新时间 :
  • 英文 :


我想知道是否有一种方法来标记非相应数字?例如:

Number 
3         
4         
5         
6         
10        
11        
12        
16     

是否有办法在之前标记数字像这样的非顺序数字?

Number  Flag
3         0
4         0
5         0
6         1
10        0
11        0
12        1
16     
etc..

谢谢!

dat$Flag <- +c(diff(dat$Number) != 1, NA)
dat
#   Number Flag
# 1      3    0
# 2      4    0
# 3      5    0
# 4      6    1
# 5     10    0
# 6     11    0
# 7     12    1
# 8     16   NA

我将使用lead():

df$Flag <- as.numeric(lead(df$Number) != df$Number + 1)
df
Number Flag
1      3    0
2      4    0
3      5    0
4      6    1
5     10    0
6     11    0
7     12    1
8     16   NA

这是data.table的另一个选项:

library(data.table)
setDT(df)[, Flag := +(shift(Number, type = "lead") - (Number + 1) != 0)]

Number  Flag
<int> <int>
1:      3     0
2:      4     0
3:      5     0
4:      6     1
5:     10     0
6:     11     0
7:     12     1
8:     16    NA

dplyr的另一个选项:

library(dplyr)
df %>%
mutate(Flag = +(lead(Number) - (Number + 1) != 0))

df <- structure(list(Number = c(3L, 4L, 5L, 6L, 10L, 11L, 12L, 16L)), class = "data.frame", row.names = c(NA, 
-8L))

最新更新