我有一个数据表,我想基于几个条件提取它的一个子集 - 基本上,我想要一个子集,每个日期和时间对于每个组是唯一的,同时也取第一个值每次都会发生。例如,假设我有一个如下所示的数据表:
Group | Time | Value
------------------------------------
a | 2010-07-13 20:00:00 | 1
a | 2010-07-13 20:00:00 | 2
a | 2010-07-13 20:00:01 | 3
a | 2010-07-13 20:00:02 | 4
a | 2010-07-14 20:00:00 | 5
a | 2010-07-14 20:00:01 | 6
b | 2010-07-13 20:00:00 | 7
b | 2010-07-13 20:00:00 | 8
b | 2010-07-13 20:00:01 | 9
b | 2010-07-14 20:00:00 | 10
如果我根据上面提到的条件对这个数据表进行子集化,现在看起来应该是这样的:
Group | Time | Value
-------------------------------------
a | 2010-07-13 20:00:00 | 1
a | 2010-07-13 20:00:01 | 3
a | 2010-07-13 20:00:02 | 4
a | 2010-07-14 20:00:00 | 5
a | 2010-07-14 20:00:01 | 6
b | 2010-07-13 20:00:00 | 7
b | 2010-07-13 20:00:01 | 9
b | 2010-07-14 20:00:00 | 10
我真的不太确定如何去做,所以如果有人能帮助我,那么我真的很感激,谢谢!我还附上了下面的代码来生成第一个数据表
cc <- c("a","a", "a","a", "a","a", "b","b", "b","b")
aa <- as.data.table(c(as.POSIXct("2010-07-13 20:00:00", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:00", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:01", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:02", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-14 20:00:00", format = "%Y-%m-%d %H:%M:%S") , as.POSIXct("2010-07-14 20:00:01", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:00", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:0", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-13 20:00:01", format = "%Y-%m-%d %H:%M:%S"), as.POSIXct("2010-07-14 20:00:00", format = "%Y-%m-%d %H:%M:%S")))
bb <- c(1,2,3,4,5,6,7,8,9,10)
dd <- cbind(cc,aa,bb)
rm(aa)
colnames(dd) <- c("Group", "Time", "Value")
这是dput
输出:
structure(list(Group = c("a", "a", "a", "a", "a", "a", "b", "b", "b", "b"),
Time = structure(c(1279015200, 1279015200, 1279015201, 1279015202, 1279101600, 1279101601, 1279015200, 1279015200, 1279015201,
1279101600), class = c("POSIXct", "POSIXt")), Value = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)), .Names = c("Group", "Time", "Value"), row.names = c(NA, -10L), class = c("data.table", "data.frame"), .internal.selfref = <pointer:0x0000000000100788>)