data.table
を使用できます。 'data.frame'を 'IDs'でグループ化された 'data.table'(setDT(df1)
)に変換し、 'value'(which.max
)の最初の最大値のインデックスを取得し、そのシーケンスを見つけます最初の1として5、次に1:5になります)、行インデックスを取得するために.I
でラップし、列($V1
)を抽出し、データセットのサブセットにします。
library(data.table)
setDT(df1)[df1[, .I[seq(which.max(value))], by = IDS]$V1]
特定の「ID」に「値」が0のみ含まれているかどうかは不明です。私たちは、「IDが」、我々は今、プロセス
setDT(df1) #converts the `data.frame` to `data.table`
を分割することができ、我々が得るためのプロセスを行うことができます構文を理解するためにif
条件
setDT(df1)[df1[, if(any(value!=0)) .I[seq(which.max(value))], by = IDs]$V1]
を使用することをスキップする必要がある場合ROWID。以下のコードでは、 'ID'でグループ化し、最初の要素のインデックスを 'value'(which.max(value)
)にしてから、シーケンス(seq(...)
)を実行し、データセット全体(.I[...]
) 。列「のID」とデータセットと行インデックスのデフォルトの列「V1」は上記
df1[, .I[seq(which.max(value))] , by = IDs]
ザ
(我々は、列名を指定しなかったように)、我々は、その列、使用を抽出している場合$V1
又は[["V1"]]
i1 <- df1[, .I[seq(which.max(value))] , by = IDs]$V1
行インデックス( 'I1')の目的は、初期のデータセットの行をサブセットするために使用される
df1[i1]
画像を投稿しないで、代わりに 'dput'を使用して例を表示してください。予想される出力も表示できますか? – akrun
@akrun - あまりにも奇妙なカットアンドペーストエラーが発生しているので、SOのコメントからコードを取ります。非印字スペース文字...奇妙です。 – thelatemail