在一个阵列中放弃NA值& R中的相关性

时间:2017-04-29 19:05:22

标签: arrays r

我尝试使用cor()函数关联R中的两个数组。但是,为了比较它们,我需要它们的长度相同。问题是,我从更大的数据集中获取数组,并且在一个变量中有NA值,而在另一个变量中没有。我首先从更大的数据集中对我想要的样本进行子集化,现在我尝试将变量分成他们自己的数组并进行比较。我能够从其中一个变量中删除NA,但这会留下两个不同长度的数组。

到目前为止,这是代码:

    ## Flight Differences in Distance

    SampleFlights <- subset(Jan2017DataSet, Jan2017DataSet$ORIGIN == 
    "LAX" & Jan2017DataSet$DISTANCE < 500)

    Dep_Delay <- c(SampleFlights$DEP_DELAY)
    Dist <- c(SampleFlights$DISTANCE)

    ##

    Dep_Delay <- Dep_Delay[!is.na(Dep_Delay)]

    cor(SampleFlights$DISTANCE, Dep_Delay)

2 个答案:

答案 0 :(得分:1)

删除第一个子集中的NA

     SampleFlights <- subset(Jan2017DataSet, Jan2017DataSet$ORIGIN == 
        "LAX" & Jan2017DataSet$DISTANCE < 500 & !is.na(Dep_Delay))

要找到相关性,您需要将两个变量来自同一观察(飞行),因此您需要删除整行。

答案 1 :(得分:1)

由于这些值来自同一数据帧,因此您可以在执行相关之前从数据帧中删除行:

SampleFlights <- SampleFlights[!is.na(SampleFlights$DEP_DELAY),];

这也适用于subset运算符:

SampleFlights <- subset(SampleFlights, !is.na(DEP_DELAY));

如果您需要删除任一数据集中存在的NA值,可以使用|

SampleFlights <- 
  subset(SampleFlights, !is.na(DEP_DELAY) | !is.na(DISTANCE));

可以在没有中间变量赋值的情况下完成相关:

cor(SampleFlights$DISTANCE, SampleFlights$DEP_DELAY);