Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何忽略R中的空值?_R_Null - Fatal编程技术网

如何忽略R中的空值?

如何忽略R中的空值?,r,null,R,Null,我有一个数据集,在一个字段中有一些空值。当我尝试运行线性回归时,它将字段中的整数视为类别指示符,而不是数字 例如,对于不包含空值的字段 summary(lm(rank ~ num_ays, data=a)), 返回: Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 10.607597 0.019927 532.317 < 2e-16 *** num_ays

我有一个数据集,在一个字段中有一些空值。当我尝试运行线性回归时,它将字段中的整数视为类别指示符,而不是数字

例如,对于不包含空值的字段

summary(lm(rank ~ num_ays, data=a)),
返回:

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 10.607597   0.019927 532.317  < 2e-16 ***
num_ays      0.021955   0.007771   2.825  0.00473 ** 
系数:
估计标准误差t值Pr(>t)
(截距)10.607597 0.019927 532.317<2e-16***
数字0.021955 0.007771 2.825 0.00473**
但是,当我在具有空值的字段上运行相同的模型时,我得到:

Coefficients:
              Estimate Std. Error  t value Pr(>|t|)    

(Intercept)  1.225e+01  1.070e+00   11.446  < 2e-16 ***
num_azs0    -1.780e+00  1.071e+00   -1.663  0.09637 .  
num_azs1    -1.103e+00  1.071e+00   -1.030  0.30322    
num_azs10   -9.297e-01  1.080e+00   -0.861  0.38940    
num_azs100   1.750e+00  5.764e+00    0.304  0.76141    
num_azs101  -6.250e+00  4.145e+00   -1.508  0.13161    
系数:
估计标准误差t值Pr(>t)
(截距)1.225e+01 1.070e+00 11.446<2e-16***
编号azs0-1.780e+001.071e+00-1.6630.09637。
编号azs1-1.103e+001.071e+00-1.0300.30322
编号azs10-9.297e-01 1.080e+00-0.861 0.38940
num_azs100 1.750e+00 5.764e+00 0.304 0.76141
num_azs101-6.250e+00 4.145e+00-1.508 0.13161

处理此问题的最佳和/或最有效的方法是什么,以及折衷方法是什么?

您可以忽略空值,如下所示:

a[!is.null(a$num_ays),]

可以忽略空值,如下所示:

a[!is.null(a$num_ays),]

以Shane的答案为基础:您可以在
lm()
data=
参数中使用它:


以Shane的答案为基础:您可以在
lm()
data=
参数中使用它:


谢谢,谢恩。我尝试使用:summary(lm(rank~num_-ays,data=a[!is.null(a$num_-ays)])来应用它)。但是,它给了我相同的输出。
is.null
如果对象为
null
则返回
TRUE
,否则返回
FALSE
。因此,您的构造返回
a
或0行
数据的所有行。frame
。我很确定你在想
is.na
;)谢谢,谢恩。我尝试使用:summary(lm(rank~num_-ays,data=a[!is.null(a$num_-ays)])来应用它)。但是,它给了我相同的输出。
is.null
如果对象为
null
则返回
TRUE
,否则返回
FALSE
。因此,您的构造返回
a
或0行
数据的所有行。frame
。我很确定你在想
is.na
;)谢谢,德克。我试过了,但它仍然将列中的数字视为类别标签。。。结果和以前一样。我还遗漏了什么吗?你被各种因素绊倒了。这是另一个问题。尝试并搜索“[r]因子”(即在为r标记的
[r]
帖子中的
因子一词)。您将需要以不同的方式读取数据,并/或转换数据。使用
lm
subset
参数不是更好吗?谢谢,德克。我试过了,但它仍然将列中的数字视为类别标签。。。结果和以前一样。我还遗漏了什么吗?你被各种因素绊倒了。这是另一个问题。尝试并搜索“[r]因子”(即在为r标记的
[r]
帖子中的
因子一词)。您需要以不同的方式读取数据,并/或转换数据。使用
lm
subset
参数不是更好吗?您想到的是
NA
?是否有可能
num_azs
是一个
因素
?看起来我没有清理数据…我不认为这是一个因素。num_ays和num_azs都来自MySQL导出。两者的字段类型都是整数,但num_azs可以包含空值。summary(a)说您的数据列是什么?我猜一个非数值导致了因子的转换。解决方案是使用as.numeric(as.character(foo))将其转换为数值。谢谢,Marek等人发现它被列为一个因子。我将在另一个问题中寻求答案。你想说空话吗?是否有可能
num_azs
是一个
因素
?看起来我没有清理数据…我不认为这是一个因素。num_ays和num_azs都来自MySQL导出。两者的字段类型都是整数,但num_azs可以包含空值。summary(a)说您的数据列是什么?我猜一个非数值导致了因子的转换。解决方案是使用as.numeric(as.character(foo))将其转换为数值。谢谢,Marek等人发现它被列为一个因子。我将在另一个问题中寻求答案。