R 删除同一学生在同一周内的旧调查观察结果

R 删除同一学生在同一周内的旧调查观察结果,r,R,我的数据框包含了针对个人的第1周和第12周课程调查结果,一些个人已经参加了第1周的调查两次,如下面的学生#100。df中除了示例中显示的向量之外还有其他向量,但我想删除这些个体最古老的观测值 St# Week Date 100 1 15-Jun 100 1 18-Jun 100 12 25-Aug 101 1 17-Jun 101 12 25-Aug 102 12 26-Aug 此外,如果学生只参加

我的数据框包含了针对个人的第1周和第12周课程调查结果,一些个人已经参加了第1周的调查两次,如下面的学生#100。df中除了示例中显示的向量之外还有其他向量,但我想删除这些个体最古老的观测值

St#   Week  Date    
100     1   15-Jun
100     1   18-Jun  
100     12  25-Aug  
101     1   17-Jun  
101     12  25-Aug
102     12  26-Aug  
此外,如果学生只参加了第1周或第12周(如学生102)的学习,我如何删除观察结果


提前感谢

以下是
数据表
plyr
解决方案

dat <- read.table(text = "St   Week  Date
100     1   15-Jun
100     1   18-Jun
100     12  25-Aug
101     1   17-Jun
101     12  25-Aug
102     12  26-Aug  ", header = TRUE, stringsAsFactors = FALSE)

dat$Date <- as.Date(paste(dat$Date, "2014"), format = "%d-%b %Y")

library(data.table)

DT <- data.table(dat)   
DT[order(Date), head(.SD, 1), by = list(St, Week)][duplicated(St) | duplicated(St, fromLast = TRUE)]

##     St Week       Date
## 1: 100    1 2014-06-15
## 2: 101    1 2014-06-17
## 3: 100   12 2014-08-25
## 4: 101   12 2014-08-25


library(plyr)

out <- ddply(dat, .(St, Week), function(x) head(x[order(x$Date),], 1) )
out[duplicated(out$St) | duplicated(out$St, fromLast = TRUE),]

##    St Week       Date
## 1 100    1 2014-06-15
## 2 100   12 2014-08-25
## 3 101    1 2014-06-17
## 4 101   12 2014-08-25

dat Jake-不确定这是否奏效,因为我最终在DT中得到了与我开始时相同数量的观察结果-预期删除rowsOK后的观察结果会更少-刚刚看到了plyr方法-让我试试。