【发布时间】:2021-07-05 07:32:30
【问题描述】:
我的数据框 (1700000x3) 有 3 列:
- 日期:从 2011 年到 2019 年(在整个日期中随机选择日期和月份)
- light:从 350 转到 2299(一个接一个)然后重新启动
- ID:目标
- V:值
这就是我的数据的样子(快速示例):
| date | light | ID | V |
|---|---|---|---|
| 2013-06-17 | 350 | p01 | 0.1 |
| 2013-06-17 | 351 | p01 | 0.1 |
| 2013-06-17 | 352 | p01 | 0.2 |
| 2013-06-17 | 353 | p01 | 0.3 |
| 2013-06-17 | 354 | p01 | 0.1 |
| 2013-06-17 | 355 | p01 | 0.1 |
| 2013-04-18 | ... | p01 | 0.1 |
| 2013-06-17 | 2297 | p01 | 0.2 |
| 2013-06-17 | 2298 | p01 | 0.3 |
| 2013-06-17 | 2299 | p01 | 0.2 |
| 2014-04-18 | 350 | r03 | 0.1 |
| 2014-04-18 | 351 | r03 | 0.4 |
| 2014-04-18 | 352 | r03 | 0.1 |
| 2014-04-18 | 353 | r03 | 0.6 |
| 2014-04-18 | 354 | r03 | 0.2 |
| 2014-04-18 | 355 | r03 | 0.1 |
| 2014-04-18 | ... | r03 | 0.1 |
| 2014-04-18 | 2297 | r03 | 0.5 |
| 2014-04-18 | 2298 | r03 | 0.5 |
| 2014-04-18 | 2299 | r03 | 0.6 |
到这里为止一切顺利!问题在于,在数据框的中间,LIGHT 列的数字不是从 350 到 2299,而是从 2299 到 350。这些已针对多个 ID 进行了验证。 数据框的一部分如下所示:
| date | light | ID | V |
|---|---|---|---|
| 2014-07-31 | 2299 | s01 | 0.1 |
| 2014-07-31 | 2298 | s01 | 0.1 |
| 2014-07-31 | 2297 | s01 | 0.2 |
| 2014-07-31 | 2296 | s01 | 0.3 |
| 2014-07-31 | 2295 | s01 | 0.1 |
| 2014-07-31 | 2294 | s01 | 0.1 |
| 2014-07-31 | ... | s01 | 0.1 |
| 2014-07-31 | 352 | s01 | 0.2 |
| 2014-07-31 | 351 | s01 | 0.3 |
| 2014-07-31 | 350 | s01 | 0.2 |
| 2014-07-31 | 2299 | x03 | 0.1 |
| 2014-07-31 | 2298 | x03 | 0.4 |
| 2014-07-31 | 2297 | x03 | 0.1 |
| 2014-07-31 | 2296 | x03 | 0.6 |
| 2014-07-31 | 2295 | x03 | 0.2 |
| 2014-07-31 | 2294 | x03 | 0.1 |
| 2014-07-31 | ... | x03 | 0.1 |
| 2014-07-31 | 352 | x03 | 0.5 |
| 2014-07-31 | 351 | x03 | 0.5 |
| 2014-07-31 | 350 | x03 | 0.6 |
我想要的是让 LIGHT 列始终具有从 350 到 2299 的数字间隔,然后从 350 到 2299 重新开始,依此类推。此操作必须尊重其他列、日期、V“值”和 ID。
重要提示:我有不同日期的相同代码!!
我无法找到此类特定问题的答案。
任何帮助将不胜感激。
【问题讨论】:
标签: r dataframe data-manipulation organization