【发布时间】:2012-12-02 11:53:51
【问题描述】:
我昨天收到了答复,但有一件事不是 100% 正确的。我的数据框简短:
ID IDaxis Y Date-Time Tdiff
1 1 5 2012-06-11 13:10:30 0.00
1 1 10 2012-06-11 15:10:30 2.00
1 1 20 2012-06-11 17:10:30 2.00
1 3 15 2012-06-11 13:20:30 0.00
1 3 30 2012-06-11 14:20:30 1.00
1 3 45 2012-06-11 17:20:30 3.00
1 6 9 2012-06-11 13:35:30 0.00
1 6 15 2012-06-11 15:35:30 2.00
1 6 30 2012-06-11 18:35:30 3.00
3 2 8 2012-06-11 13:50:30 0.00
3 2 14 2012-06-11 14:55:30 1.083
3 2 20 2012-06-11 16:55:30 2.00
3 2 30 2012-06-11 19:00:30 2.083
3 5 10 2012-06-11 13:40:30 0.00
3 5 15 2012-06-11 16:45:30 3.083
ID - 植物
IDaxis - 植物叶子
Y - 叶长
日期 - 时间 - 测量日期和时间
Tdiff - time(h) 测量间隔
我想做:
- 在 SHORT$Ttot 列中为 IDaxis 总结 Tdiff
- 计算 SHORT$Ydiff 列中 IDaxis 的 Y 行之间的差异
- 在 SHORT$Ytot 列中为 IDaxis 总结 Ydiff
代码:
-
SHORT$Ttot <- ave(SHORT$Tdiff, SHORT$IDaxis, FUN = cumsum)效果很好 SHORT$Ydiff <- ave(SHORT$Y, SHORT$IDaxis, FUN = diff)
这里我有一个问题。 Ydiff 应该是这样的(新 IDxais 的第一行等于 = 0):
ID IDaxis Y Ydiff
1 1 5 0
1 1 10 5
1 1 20 10
1 3 15 0
1 3 30 15
1 3 45 15
1 6 9 0
但是 Ydiff 看起来是这样的:
ID IDaxis Y Ydiff
1 1 5 5
1 1 10 10
1 1 20 -5
1 3 15 15
1 3 30 15
1 3 45 15
1 6 9 -36
这一切都被代码搞砸了:
3.SHORT$Ytot <- ave(SHORT$Ydiff, SHORT$IDaxis, FUN = cumsum)
如果你能用一段非常有帮助的代码来回答的话。
我刚刚开始使用 R,但这是我的数据框的简化版本 - 只是为了说明问题。我有三个数据框,每个 700 ID,每个都有 100 IDaxis 和 25 个变量。
【问题讨论】:
-
请始终输入您的数据 :)
标签: r loops dataframe grouping subset