提取数据帧中每个元素的前n个值的索引

时间:2012-06-19 22:08:43

标签: r sorting dataframe plyr

我有4名学生在数据框中回答在线调查问卷的时间戳。第一列是Time,第二列是学生的id(id:1,2,3,4)。以下是模拟数据框:

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

我正在尝试提取每个学生的前五个条目的索引以提取条目的时间戳。这应该返回一个包含20个值的数组(4个学生X前5个条目)。

我尝试过使用rank(),order(),混合使用ddply()但是没有成功。有什么好建议吗? 谢谢!

1 个答案:

答案 0 :(得分: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),])))