【发布时间】:2013-11-01 15:27:00
【问题描述】:
我有一个包含 id、POSIXct(Date & Time) 的数据框
> myData
Tpt_ID Tpt_DateTime Value
1 1 2013-01-01 15:17:21 CST 10
2 2 2013-01-01 15:18:32 CST 5
3 3 2013-01-01 16:00:02 CST 1
4 1 2013-01-02 15:10:11 CST 15
5 2 2013-02-02 11:18:32 CST 6
6 3 2013-02-03 12:00:02 CST 2
7 1 2013-01-01 19:17:21 CST 21
8 2 2013-02-02 20:18:32 CST 8
9 3 2013-02-03 22:00:02 CST 3
我想获取每个日期和 ID 的最后一个值
例如,
Tpt_ID Tpt_DateTime Value
2 2013-01-01 15:18:32 CST 5
3 2013-01-01 16:00:02 CST 1
1 2013-01-02 15:10:11 CST 15
1 2013-01-01 19:17:21 CST 21
2 2013-02-02 20:18:32 CST 8
3 2013-02-03 22:00:02 CST 3
数据样本:
structure(list(Tpt_ID = c(1, 2, 3, 1, 2, 3, 1, 2, 3), Tpt_DateTime = structure(c(1357024641, 1357024712, 1357027202, 1357110611, 1359775112, 1359864002, 1357039041, 1359807512, 1359900002), class = c("POSIXct", "POSIXt"), tzone = ""), Value = c(10, 5, 1, 15, 6, 2, 21, 8, 3)), .Names = c("Tpt_ID", "Tpt_DateTime", "Value"), row.names = c(NA, 9L), class = "data.frame")
【问题讨论】:
-
这样的东西应该可以工作:
aggregate(Value ~ Tpt_ID + Tpt_DateTime, tail, 1, data=myData) -
@Jilber 谢谢!如果数据框中的值变量超过 2 个怎么办?
-
您的意思是 LHS 中的两个变量?
aggregate(cbind(Y1, Y2) ~ X1 + X2, tail, 1, data=myData)或 RHS 中有两个以上的变量,LHS 中只有一个aggregate(Y1~ X1 + X2 + X3 + X4, tail, 1, data=myData) -
@Jilber 是的,我的意思是 LHS。不幸的是,这不起作用......仍然显示重复的日期......
-
提供你的数据样本,显示
dput(head(myData, 15))的输出
标签: r dataframe aggregate posixct