3

データフレーム内のオンラインアンケートに回答する4人の学生のタイムスタンプエントリがあります。最初の列は時間、2番目の列は学生のID(id:1,2,3,4)です。以下は、シミュレートされたデータフレームです。

DF <- data.frame(cbind(Time=1:60, ID=sample(1:4, 60, replace=T)))

各学生の最初の5番目のエントリのインデックスを抽出して、エントリのタイムスタンプを抽出しようとしています。これにより、20個の値の配列が返されます(4人の学生X最初の5つのエントリ)。

ddply()を組み合わせてrank()、order()を使用してみましたが、成功しませんでした。何か良い提案はありますか?ありがとう!

4

1 に答える 1

1

mplourdeがコメントで与えた答えは素晴らしいですが、あなたもこれを行うことができますplyr

library(plyr)
ddply(DF, .(ID), function(x) data.frame(Time_sorted=tail(sort(x$Time))))

およびbyバージョン:

do.call(rbind, by(DF, DF$ID, function(x) tail(x[order(x$Time),])))
于 2012-06-19T22:42:43.240 に答える