【发布时间】:2018-05-02 15:19:46
【问题描述】:
我有一个大数据集,它的简短版本如下所示:
Time L_Diam_x Trigger sample_rate
505381380 -0.9935 3200 4001
505385381 -0.9934 3200 4002
505389383 -0.9934 3200 4001
505393384 -0.9937 3200 4002
505397386 -0.9939 3200 4001
505401387 -0.9938 3200 8000
505409387 -0.9934 3200 4001
我想在 sample_rate 列中找到所有超过 5000 的值,并在每一行之后插入一个新行。除了列 Time 之外,该新行应在其余列中包含零。对于新行中的 Time 列,该值应等于 Time 列中的前一个值 + 4001。因此,最终数据集将如下所示:
Time L_Diam_x Trigger sample_rate
505381380 -0.9935 3200 4001
505385381 -0.9934 3200 4002
505389383 -0.9934 3200 4001
505393384 -0.9937 3200 4002
505397386 -0.9939 3200 4001
505401387 -0.9938 3200 4000
505405387 0 0 4000
505409387 -0.9934 3200 4000
解决这个重要问题的最简单方法是什么?
【问题讨论】:
-
根据 sample_rate > 5000 对数据帧进行分区。将值大于 5000 的数据帧复制到其中一个副本中,将其所有非时间列更改为零,然后将 4001 添加到其时间柱子。然后 bind_rows 将所有三个部分重新组合在一起。您甚至没有给出生成示例数据的方法,更不用说显示尝试了,所以我不愿意给出明确的代码。