r - 在给定点之后将列的值设置为 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
我该怎么做?谢谢你的帮助!
解决方案
当然不是最优雅的解决方案,但它非常直观:
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
推荐阅读
- visual-studio - 我可以强制 Visual Studio 不使用特定的第 3 方库吗?
- python - 为什么 Python 在尝试强制转换时认为我正在创建一个变量?
- java - RestAssured 自定义 TLS 版本
- python - 不使用绝对路径导入 Wheel 文件依赖
- .net - .NET Framework (mscorlib) 中的错误阻止堆栈跟踪行号(在便携式 pdb 中)?
- flutter - Flutter,有人知道如何使用这个 api 更新我的用户资料吗?使用 laravel api 颤动
- c++ - 如何解决由于函数中数组的默认值声明而导致的错误
- azure - 资源组的使用
- python - 如何读取多个 txt 文件 - Python
- dll - .Net Standard 2.0 和 Microsoft.Windows.Compatibility:找不到文件或程序集“System.Drawing.Common,版本 = 4.0.0.1”