首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除同一周内同一学生的旧调查观察值

删除同一周内同一学生的旧调查观察值
EN

Stack Overflow用户
提问于 2014-02-18 00:31:36
回答 1查看 20关注 0票数 0

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

代码语言:javascript
运行
复制
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,我如何删除观察结果?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-02-18 00:51:35

以下是data.tableplyr解决方案。

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21834370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档