我想知道是否有一种方法来标记非相应数字?例如:
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))