【发布时间】:2014-09-24 13:58:59
【问题描述】:
我的数据如下所示:
ROW ID DATE DO CO EID
1 1 11/1/2010 1500 . 1
2 1 11/1/2010 300 . 1
3 1 11/2/2010 1000 . 1
4 1 11/2/2010 750 . 1
5 1 11/2/2010 0 15 0
6 1 11/2/2010 1400 . 1
7 1 11/2/2010 300 . 1
8 2 11/4/2010 700 . 1
9 2 11/5/2010 2000 . 1
10 2 11/6/2010 0 20 0
11 2 11/6/2010 1500 . 1
12 2 11/6/2010 750 . 1
13 2 11/6/2010 200 . 1
14 2 11/8/2010 2500 . 1
15 2 11/8/2010 2500 . 1
我希望它像这样创建一个列 TDD:
ROW ID DATE DO CO EID TDD
1 1 11/1/2010 1500 . 1 1800
2 1 11/1/2010 300 . 1 1800
3 1 11/2/2010 1000 . 1 1750
4 1 11/2/2010 750 . 1 1750
5 1 11/2/2010 0 15 0 1750
6 1 11/2/2010 1400 . 1 1700
7 1 11/2/2010 300 . 1 1700
8 2 11/4/2010 700 . 1 700
9 2 11/5/2010 2000 . 1 2000
10 2 11/6/2010 0 20 0 2000
11 2 11/6/2010 1500 . 1 2450
12 2 11/6/2010 750 . 1 2450
13 2 11/6/2010 200 . 1 2450
14 2 11/8/2010 2500 . 1 5000
15 2 11/8/2010 2500 . 1 5000
因此,TDD 列只不过是特定 ID 的相同日期的 DO 值的总和,例如。见第 1,2 和 14,15 行。然而,CO 值增加了复杂性。请注意,第 3 到第 7 行的日期相同,但所有五行的 TDD 值不同。第 6 行和第 7 行的 TDD 值是 1700 而不是 1750(第 3 到 5 行),因为在第 5 行 CO 列有一个值。
第 10 行到第 13 行也有相同的日期,但第 9 行的 TDD 值是 2000 而不是 2450。因此,具有 CO 值的行的 TDD 值将与其前面的 TDD 值相同ID 。并且,即使日期相同,具有 CO 值的行也会重置 TDD 的计算,例如。见第 3 至 7 行。
数据的性质是,只要 CO 列有值,DO 和 EID 就为 0。我的数据中有数千个具有类似结构的 ID。如果您能帮助我使用 r 代码根据上述条件计算 TDD 列的值,那就太好了。谢谢。
【问题讨论】:
-
CO 和 TDD 值之间没有相关性。 CO 值是我任意选择的。我只是想表明,当 CO 取一个值时,需要重置 TDD 的计算。您所指的 TDD 值 1700 是第 6 行和第 7 行的 DO 值之和。TDD 值 2450 是第 11、12 和 13 行的 DO 值之和。
-
弗利克先生,对不起。对于输入中第 7 行的 DATE,它应该是 11/2/2010。我该如何纠正上面的错误?
-
MrFlick 第 9 行和第 10 行不应该是同一天。
-
@MrFlick :这是参考您对第 9 行和第 10 行的评论。由于 DO 值未在 2010 年 11 月 6 日记录,即在 2010 年 11 月 6 日记录 CO 值之前, 2010 年 11 月 5 日的 DO 值将用于计算第 10 行的 TDD 值。因此,为了纠正自己,具有 CO 值的行的 TDD 值将始终是前一行中的 TDD 值。
-
你真的很喜欢让事情变得困难,不是吗;)我已经更新了我的答案。
标签: r