首页 > 解决方案 > 在给定点之后将列的值设置为 NA

问题描述

我有一个这样的数据集:

ID   NUMBER   X
1      5      2
1      3      4
1      6      3
1      2      5
2      7      3
2      3      5
2      9      3
2      4      2

并且我想在每个 ID 的变量 NUMBER 增加(即使它再次减少)之后将变量 X 的值设置为 NA ,并获得:

ID   NUMBER   X
1     5       2
1     3       4
1     6       NA
1     2       NA
2     7       3
2     3       5
2     9       NA
2     4       NA

我该怎么做?谢谢你的帮助!

标签: rna

解决方案


当然不是最优雅的解决方案,但它非常直观:

library(data.table)
setDT(d)
d[, n := ifelse(NUMBER > shift(NUMBER, 1, "lag"),1,0), by=ID]
d[is.na(n), n := 0]
d[, n := cumsum(n), by=ID]
d[n>0, X := NA ]
d

   ID NUMBER  X n
1:  1      5  2 0
2:  1      3  4 0
3:  1      6 NA 1
4:  1      2 NA 1
5:  2      7  3 0
6:  2      3  5 0
7:  2      9 NA 1
8:  2      4 NA 1

推荐阅读