我有一个这样的df:
> head(datamelt)
TIMESTAMP ring dendro diameter ID Rain_mm_Tot year DOY
1373635 2013-05-02 00:00:00 1 1 3405 r1_1 0 2013 122
1373672 2013-05-02 00:15:00 1 1 3417 r1_1 0 2013 122
1373735 2013-05-02 00:30:00 1 1 3417 r1_1 0 2013 122
1373777 2013-05-02 00:45:00 1 1 3426 r1_1 0 2013 122
1373826 2013-05-02 01:00:00 1 1 3438 r1_1 0 2013 122
1373873 2013-05-02 01:15:00 1 1 3444 r1_1 0 2013 122
我使用 ddply 以两种不同的方式获取每个 dendro(dendrometers)中每年(DOY)的最小直径值:i)第一个完成它的工作,为每天和 dendro 提供一个值。nrow(每日分钟)=5784。但是,我不知道当一天有几个最小值时它会做什么,但在这种情况下,这不是我需要的结果:
library(plyr)
dailymin <- ddply(datamelt, .(year,DOY,ring,dendro), function(x)x[which.min(x$diameter), ])
ii)如果有几个最小值,第二种方法每天返回几行,这没关系。nrow(每日分钟)=12634:
dailymin <- ddply(datamelt, .(year,DOY,ring,dendro), function(x)x[x$diameter==min(x$diameter), ])
这是我的问题: - 当有几个最小值时,i) 方式如何工作?- 更重要的是,在 ii) 的方式中,当有几个最小值时,我怎么能只让最小值发生在更远的时间?例如,对于环 #2 中的 dendro #5 的图像,在 3598mm 直径中有 3 个最小值,发生在 13:15、13:30 和 13:45。我只想拥有最后一个(13:45)并删除其他人。
> str(dailymin$TIMESTAMP)
POSIXct[1:12634], format: "2013-05-02 13:45:00" "2013-05-02 08:45:00" "2013-05-02 14:00:00" "2013-05-02 13:45:00" "2013-05-02 14:45:00" ...
谢谢