r - 在R数据帧中减去对角线?
问题描述
这是我的数据框:
ID max_t min_t diff
1.9 84904814 84904755 NA
1.4 84905065 84905014 -310
1.6 84905290 84905248 -276
1.0 84906383 84906316 -1135
2.9 82023344 82023251 2882972
2.4 82023527 82023419 -276
2.6 82023669 82023561 -250
2.0 82023811 82023728 -250
我的问题是 diff 列。
我希望它检查范围/时间差异如下:
1.4 min_t - 1.9 max_t (84905014-84904814)
1.6 min_t - 1.4 max_t (84905248-84905065)
……
预期输出:
ID max_t min_t diff
1 1.9 84904814 84904755 200
2 1.4 84905065 84905014 183
3 1.6 84905290 84905248 1026
4 1.0 84906383 84906316 -2883132
5 2.9 82023344 82023251 75
6 2.4 82023527 82023419 34
7 2.6 82023669 82023561 59
8 2.0 82023811 82023728 NA
这是我所做的,但它没有为我提供我想要的。请告诉我在这里想念什么?
test$diff <- lag(test$min_t, 1) - test$max_t
解决方案
您应该使用lead
而不是lag
:
library(dplyr)
test %>%
mutate(lag_min_t = lag(min_t), # For demo
lead_min_t = lead(min_t), # For demo
diff = lead(min_t) - max_t)
结果:
ID max_t min_t diff lag_min_t lead_min_t
1 1.9 84904814 84904755 200 NA 84905014
2 1.4 84905065 84905014 183 84904755 84905248
3 1.6 84905290 84905248 1026 84905014 84906316
4 1.0 84906383 84906316 -2883132 84905248 82023251
5 2.9 82023344 82023251 75 84906316 82023419
6 2.4 82023527 82023419 34 82023251 82023561
7 2.6 82023669 82023561 59 82023419 82023728
8 2.0 82023811 82023728 NA 82023561 NA
推荐阅读
- javascript - jQuery键盘事件在错误的输入字段上触发
- android - 滚动到 NestedScrollView 内的 recyclerview 中的位置?
- javascript - 如何使用 Jquery/Javascript 在动态创建的表中添加 id
- php - mysql查询问题与while循环
- python - python tkinter - 在按钮按下时写标签
- python - Django REST API,自动化文档?
- javascript - 从 Wordpress 验证并与第三方连接
- json - 从 riot 中提取 API 密钥时遇到问题
- sql - SQL 中没有总计的 ORDER BY
- java - 将对象分配给接口变量而不实现接口