start.date spell length
1987-10-01 34
1987-10-25 2
1987-10-30 5
1987-11-16 78
我正在尝试找到一个可以查看30年数据并且仅保留每年最长拼写长度的代码。从理论上讲,我在一个数据框中将有30个日期和30个拼写长度。先感谢您!
最终结果
start.date spell length
1987-11-16 78
答案 0 :(得分:1)
我们可以使用which.max
在"spell length"
列中找到最大值的索引,并使用它来对数据集的行进行子集化
dat[which.max(dat[[2]]),, drop = FALSE]
如果存在多个年份,则提取“年份”部分作为分组变量,以在ave
中使用,以创建逻辑索引来对数据集的行进行子集设置
grp <- format(as.Date(dat$start.date), "%Y")
i1 <- with(dat, ave(`spell length`, grp, FUN = max) == `spell length`)
dat[i1, , drop = FALSE]