Mam ramkę danych przechowującą różne wartości. Próbka:Obliczanie średniej z dwóch kolumn w ramce danych
a$open a$high a$low a$close
1.08648 1.08707 1.08476 1.08551
1.08552 1.08623 1.08426 1.08542
1.08542 1.08572 1.08453 1.08465
1.08468 1.08566 1.08402 1.08554
1.08552 1.08565 1.08436 1.08464
1.08463 1.08543 1.08452 1.08475
1.08475 1.08504 1.08427 1.08436
1.08433 1.08438 1.08275 1.08285
1.08275 1.08353 1.08275 1.08325
1.08325 1.08431 1.08315 1.08378
1.08379 1.08383 1.08275 1.08294
1.08292 1.08338 1.08271 1.08325
Co chcę zrobić, jest tworzenie nowej kolumny a$mean
przechowywania średnią a$high
i a$low
dla każdego wiersza.
Oto jak osiągnąć to, że:
highlowmean <- function(highs, lows){
m <- vector(mode="numeric", length=0)
for (i in 1:length(highs)){
m[i] <- mean(highs[i], lows[i])
}
return(m)
}
a$mean <- highlowmean(a$high, a$low)
Jednak jestem trochę nowy w R oraz w językach functionnal w ogóle, więc jestem pewien, że jest bardziej skuteczny/prosty sposób osiągnąć to.
Jak osiągnąć ten najmądrzejszy sposób?
Jakie byłoby zachowanie, aby nie używać rowMeans? NA będzie przyjmowane jako 0? – Lovy
@LoveMetal Po prostu zaznacz to 'mean (c (3, NA), na.rm = TRUE)' i '(3 + 0)/2' – akrun