r - 提取数据框中每个元素的前n个值的索引

我有一个时间戳记条目,其中有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()的混合方式,但未成功。有什么好的建议吗?
谢谢!

最佳答案

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),])))

https://stackoverflow.com/questions/11110218/

相关文章:

ruby-on-rails-3 - 回形针在使用S3时在本地查找文件以进行重新处理

hudson - Jenkins jacoco插件

web-services - 使用Web服务访问TFS

codeigniter - CodeIgniter DB session 问题:sess_expir

for-loop - 无法在for循环中的子句中执行exe

hibernate - Jpa vs Hibernate - 标准还是功能?

assembly - 如何从CUDA C调用ptx函数?

perl - Perl的system()是否自动在Cygwin中转义字符?

hibernate - Grails/hibernate 标准ID inList

perl - 从 Mojolicious 用户代理响应中提取 cookie