しばらく使っていた関数を書き直そうとしています。簡略化すると、次のようになります。
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で区別できます。1レベル深く掘り下げたいので、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)
私はその方法を見つけることができません。