从BEA API提取数据时,不要将NAs替换为0

从BEA API提取数据时,不要将NAs替换为0,api,get,r-markdown,na,Api,Get,R Markdown,Na,当我使用下面的代码来获取BEA数据时,我确实获得了R降价的数据。但是,它将所有NAs转换为零,并给我一条消息“强制引入的NAs”。我如何确保NAs保持为NAs,并且不会变成零 beaPCI <- list( 'UserID' = beaKey , 'Method' = 'GetData', 'datasetname' = 'RegionalIncome', 'TableName' = 'CA1' , 'LineCode' = '3', 'Ye

当我使用下面的代码来获取BEA数据时,我确实获得了R降价的数据。但是,它将所有NAs转换为零,并给我一条消息“强制引入的NAs”。我如何确保NAs保持为NAs,并且不会变成零

beaPCI <- list(
    'UserID' = beaKey ,
    'Method' = 'GetData',
    'datasetname' = 'RegionalIncome',
    'TableName' = 'CA1' ,
    'LineCode' = '3',
    'Year' = '1992, 1996, 2000, 2004, 2008, 2012' ,
    'GeoFips' = 'COUNTY' ,
    'ResultFormat' = 'json'
);
beaPCI <- beaGet(beaPCI)

beaPCI我知道这已经有一年了,但是仍然没有答案。我自己也有这个问题,所以我决定做一些调查。即使我只是一个R中级用户,我想我找到了答案,以防你或其他人感兴趣

“强制引入的NAs”部分独立于NA对0的强制。这两者没有关系。但是,数据中的NA值确实转换为0。但这是故意的。在包代码中,在将数据转换为data.table格式的过程中,会发生以下情况:

#A weird fix to push NA values down to bottom for reshaping
beaTab[, DataValue := ifelse(is.na(DataValue), 0, DataValue)]
似乎这是为了解决作者遇到的问题。因此NA值被更改为0,并且再也没有更改回原来的值。我查看了代码,看起来这只是在转换为data.table时完成的。因此,获取数据并将其导出为列表并不使用相同的方法

在列表中生成结果的代码是:

beaGet(beaPCI, asTable = F, asList = T)
您需要包括这两个选项。如果执行此操作,则NA值保持为NA。但是,如果使用此方法,数据仍需要重新格式化


就我个人而言,我只是将零转换回NA,这样可以节省一些时间。我们知道,在这种情况下,所有数据实际上都不可能为零。

beaGet()从哪里来?beaGet来自于帮助从美国经济分析局(bea)API检索数据的包bea.R。我使用这个github页面获取代码:()