计算数据框中两列的平均值

安托万C.

我有一个存储不同值的数据框。样品:

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

我想做的是创建一个新列,a$mean存储每行的平均值a$higha$low

这是我达到的目的:

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)

但是我一般对R语言和函数语言还是有点陌生​​,所以我很确定有一种更有效/更简单的方法可以实现这一点。

如何实现最聪明的方式?

阿克伦

我们可以用 rowMeans

 a$mean <- rowMeans(a[,c('high', 'low')], na.rm=TRUE)

注意:如果有NA值,则最好使用 rowMeans

例如

 a <- data.frame(High= c(NA, 3, 2), low= c(3, NA, 0))
 rowMeans(a, na.rm=TRUE)    
 #[1] 3 3 1

和使用 +

 a1 <- replace(a, is.na(a), 0)
 (a1[1] + a1[2])/2
#  High
#1  1.5
#2  1.5
#3  1.0

注意:这绝不会使其他答案失去光泽。它在大多数情况下都可以运行,并且速度很快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章