计算计算值的平均值

我想计算由abs(((column A - column B)/column A)*100)返回的结果值的平均值。

因此,例如在我尝试mtcars数据:

> mtcars
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
...

mean((abs(mtcars['cyl']-mtcars['mpg'])/mtcars['mpg'])*100)

这给了我错误:

警告消息:在mean.default((abs(mtcars [“cyl”] - mtcars [“mpg”])/ mtcars [“mpg”])*:参数不是数字或逻辑:返回NA

我怎样才能解决这个问题?


您需要使用$运算符来提取值作为向量或使用双括号,即

mean((abs(mtcars[['cyl']]-mtcars[['mpg']])/mtcars[['mpg']])*100)
#[1] 64.13455

#or

 mean((abs(mtcars$cyl-mtcars$mpg)/mtcars$mpg)*100)
#[1] 64.13455

你可以看到结构上的差异,

str(mtcars['cyl'])
'data.frame':   32 obs. of  1 variable:
 $ cyl: num  6 6 4 6 8 6 8 4 4 6 ...

str(mtcars[['cyl']])
 num [1:32] 6 6 4 6 8 6 8 4 4 6 ...

str(mtcars$cyl)
 num [1:32] 6 6 4 6 8 6 8 4 4 6 ...

一个完美的选择:

library(dplyr)
mtcars %>% 
  summarise(Mean = mean(abs(cyl - mpg)/mpg) * 100)

      Mean
1 64.13455
链接地址: http://www.djcxy.com/p/24843.html

上一篇: Calculate mean of calculated values

下一篇: Error calculating mean by input variable in Shiny