我正在尝试重写我已经使用了一段时间的函数。简化是这样的:
dat = data.table(dataframe)
getRecentRow <- function(data) {
#Get most recent row (with highest time)
row = data[order(-Time)][1]
return(row)
}
# Run getRecentRow on each chunk given an ID
output = dat[,getRecentRow(.SD), by=ID]
此功能为我提供每个 ID 的最新条目(因此具有最高的时间)。但是,对于每个 ID,可以有多个条目。这些条目可以用 SUBID 来区分。我想更深入地挖掘一个级别,而不是获取每个 ID 的最新条目,我想要每个 SUBID 的最新条目。由于 SUBID 不是唯一的,因此还必须考虑 ID。因此,我想要每个 ID、每个 SUBID 的最新条目。
总结:getRecentRow() 函数的输入不应按 ID 进行子集化,而应按 ID 和 SUBID 进行子集化。
我试过了:
dat = data.table(dataframe)
getRecentRow <- function(data) {
#Get most recent row (with highest time)
row = data[order(-Time)][1]
return(row)
}
# Run getRecentRow on each chunk given an ID
output = dat[,getRecentRow(.SD), by=list(ID, SUBID)]
但这会返回不正确的输出,输出更多所需的行。我认为重新制定这应该是一个简单的解决方法,by=list(ID, SUBID)
但我不知道如何解决。