我有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()但是没有成功。有什么好建议吗? 谢谢!
答案 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),])))