【发布时间】:2016-01-25 22:17:53
【问题描述】:
我正在寻找一个R 函数来查找向量中的第一个和最后一个变量,类似于min 的最小值和max 的最大值。我知道我可以计算向量的长度,然后从那里开始,但它不能满足我的需要。
我有以下数据集(实际上要大得多):
a<-(c("2013-02-25","2013-03-13","2013-04-24","2013-05-12","2013-07-12","2013-08-11","actual_exam_date"))
b<-c(300,230,400,NA,NA,NA,"2013-04-30")
c<-c(NA,260,410,420,NA,NA,"2013-05-30")
d<-c(300,230,400,NA,370,390,"2013-08-30")
df<-as.data.frame(rbind(b,c,d))
colnames(df)<-a
rownames(df)<-(c("student 1","student 2","student 3"))
df$student_id <- row.names(df)
library('reshape2')
df2 <- melt(df, id.vars = c('student_id','actual_exam_date'),
variable.name = 'pretest_date',
value.name = 'pretest_score')
df2 <- df2[!is.na(df2$pretest_score),]
df2$actual_exam_date <- as.Date(df2$actual_exam_date)
df2$pretest_date <- as.Date(df2$pretest_date)
df2$days_before_exam <- as.integer(df2$actual_exam_date - df2$pretest_date)
df2$pretest_score <- as.numeric(df2$pretest_score)
df2
我计算每个学生最高分数的方法是这样的:
aggregate(pretest_score ~ student_id, df2, max)
现在我正在寻找每个学生的第一个和最后一个预测试分数,以计算它们之间的差异。有没有办法使用聚合来做到这一点?
【问题讨论】:
-
@Jilber 如果我在上面的示例中将
max替换为head或tail在aggregate(pretest_score ~ student_id, df2, max)中,它会产生三列而不是一列的预测试分数..不知道为什么跨度> -
现在我想我的答案我不知道为什么我猜第一个和最后一个应该等于最小值和最大值......即使你应该更精确地了解第一个和最后一个. “第一”和“最后”与日期或日期集的第一行和最后一行有关?
标签: r time-series