我正在尝试根据移动运营商确定一些值。我有一个主数据框,其中包含来自所有运营商的数据,我已经通过提供商从主数据框创建了3个单独的数据帧:
verizondf <- maindata[maindata$network == "Verizon",]
attdf <- maindata[maindata$network=="ATT",]
tmobiledf <- maindata[maindata$network=="TMobile",]
我想获得其中一个变量的平均值,&#34; download&#34;,这是一个数值。
在verizondf数据框架上,它可以正常工作:
> mean(verizondf$download)
[1] 462004.4
对于其他2,我得到NA:
> mean(attdf$download)
[1] NA
我想知道数据类型是否在某些时候发生了变化,但我检查过它仍然是数字:
> str(attdf$download)
num [1:5516] 321585 50722 400085 287968 138301 ...
可能导致此问题的原因是什么?
答案 0 :(得分:2)
其他人已经用他们的评论指出了这一点,我可以在这里给出一个“更全面”的解释。
使用?mean
查看帮助手册页时,您将获得说明,包括以下信息:
用法
mean(x,...)
##默认S3方法: mean(x,trim = 0,na.rm = FALSE,...)
查看“参数”部分,您将看到:
<强> na.rm 强>
一个逻辑值,表示在&gt;之前是否应该去除NA值。计算进行。
这告诉您mean
的默认设置是不剥离NA,如果您的数据包含NA,则会导致NA的平均值。
如果你想要一个数值均值计算你有NA值(这是好的,鉴于你有NA的事实...... 不始终是真的!!!)你会使用带有参数mean
的{{1}}。