3

我有 4 名学生在数据框中回答在线问卷的时间戳条目。第一列是时间,第二列是学生的 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 个条目)。

我尝试使用 rank()、order() 和 ddply() 的组合,但没有成功。有什么好的建议吗?谢谢!

4

1 回答 1

1

The answer mplourde gave in the comment is great, but you can do this with plyr too:

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

and the by version:

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