Tôi có một khung dữ liệu lưu trữ các giá trị khác nhau. Mẫu:Tính trung bình của hai cột trong một khung dữ liệu
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
Những gì tôi muốn làm, đang tạo ra một cột mới a$mean
lưu trữ giá trị trung bình của a$high
và a$low
cho mỗi hàng.
Dưới đây là làm thế nào tôi đạt được rằng:
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)
Tuy nhiên tôi là một chút mới vào R và bằng các ngôn ngữ functionnal nói chung, vì vậy tôi khá chắc chắn rằng có một/cách đơn giản hiệu quả hơn để đạt được điều đó.
Làm cách nào để đạt được điều đó một cách thông minh nhất?
Hành vi sẽ không sử dụng rowMeans là gì? NA sẽ được lấy là 0? – Lovy
@LoveMetal Chỉ cần kiểm tra này 'có nghĩa là (c (3, NA), na.rm = TRUE)' và '(3 + 0)/2' – akrun