使用R查找循环的最大值

时间:2013-08-06 01:56:42

标签: r

这是我的问题,我有一系列与日期和多天时间匹配的变量。我想浏览整个列表,首先找到每天的最大值,然后将其与相应的时间和日期一起打印出来。 这是迄今为止我所拥有的。

for (i in 1:numDays)  
{

   temp <- which(test[[i]]$Date == numDays[i])
   temp <- test[[i]][temp,]
   High[rowCnt, (i-2)+2] <- max(temp$High)
   rowCnt <- rowCnt + 1 
}

有什么建议吗?

感谢      例如:

Day Time Valeue 
x    5    0
x    6    1 
x    7    2
x    8    3
y    1    12
y    2    0
y    3    1
y    4    5

所以这应该返回:

day time value
x   8    3
y   1    12

4 个答案:

答案 0 :(得分:2)

temp[ with( temp, ave(Valeue, Day, FUN=max) ) == temp$Valeue , ] 
#--------------
  Day Time Valeue
4   x    8      3
5   y    1     12

这是一个制作逻辑向量的示例,该向量跨越所选数据帧的行数。

答案 1 :(得分:1)

使用by例如:

do.call(rbind,by(test,test$Day,
           function(x) x[which.max(x$Value),]))

  Day Time Value
x   x    8     3
y   y    1    12

答案 2 :(得分:0)

只是为了好玩:

merge(dat, aggregate(Valeue ~ Day, dat, max) )

#  Day Valeue Time
#1   x      3    8
#2   y     12    1

如果您缺少值(同样的逻辑适用于@Dwin的答案的FUN=部分)

merge(dat, aggregate(Valeue ~ Day, dat, max, na.rm=TRUE) )

答案 3 :(得分:0)

另一种方式:

# Dummy Data
dat <- data.frame(
    day=sample(c("x","y"),10,replace=TRUE),
    time=sample(1:10),
    value=sample(1:10))

# Find location of maxima in each column, subset by locations
dat[sapply(dat[2:3],which.max),]