我有以下数据,并希望获得每年最高收盘价的最新日期。
> str(ndvdf)
'data.frame': 1374 obs. of 2 variables:
$ Close: num 150 150 150 150 150 ...
$ Year : num 2009 2009 2009 2009 2009 ...
> head(ndvdf)
Close Year
2010-01-04 150.34 2009
2010-01-05 150.34 2009
2010-01-06 150.34 2009
我尝试了以下但是行索引是返回而不是日期,并且索引是针对每个年度子集的,因此很难使用rownames来获取日期。
> ddply(ndvdf, .(Year), summarise, MaxDate=which.max(Close))
Year MaxDate
1 2009 60
2 2010 244
3 2011 245
如何从我的数据中获取日期? 感谢。
答案 0 :(得分:1)
以下是一些可重现的样本数据:
set.seed(19)
df <- data.frame(Close = sample(150, 10), Year = sample(2000:2003, 10, TRUE))
rownames(df) <- Sys.Date() + 1:10
我更喜欢在这里使用 data.table 包。我们可以将as.data.table
与keep.rownames = TRUE
一起使用,并使用它来轻松获取&#34;关闭&#34;的行名称(日期)。每个&#34;年&#34;是最大的。
library(data.table)
as.data.table(df, keep.rownames = TRUE)[, rn[which.max(Close)], keyby = Year]
# Year V1
# 1: 2000 2015-08-13
# 2: 2001 2015-08-17
# 3: 2002 2015-08-16
# 4: 2003 2015-08-18