3

これが私の問題です。日付と複数の日の時間に一致する一連の変数があります。リスト全体を見ていき、最初に各日の最大値を見つけてから、対応する時刻と日付とともにそれを出力したいと思います。ここに私がこれまで持っているものがあります。

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

4 に答える 4

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
于 2013-08-06T02:05:59.003 に答える
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),]
于 2013-08-06T05:35:28.423 に答える
0

そして楽しみのために:

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

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

また、値が欠落している場合( FUN=@Dwinの回答の部分にも同じロジックが適用されます)

merge(dat, aggregate(Valeue ~ Day, dat, max, na.rm=TRUE) )
于 2013-08-06T05:28:16.397 に答える