计算计算值的平均值
我想计算由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