1

我是 RRE 的新手,我遇到了 rxMerge 函数的问题。

我想通过具有不同级别数的因子列合并两个 xdf 数据集。我想要一个内部连接来只保留匹配的级别。我收到以下错误:

错误:因子键“垫子”的级别不匹配。调用 rxFactors 使级别相同,然后对输入文件调用 rxSort。

这是我的合并功能:

rxMergeXdf(inFile1 = cible_2015_xdf, inFile2 = data_2015,
       outFile = all_data_2015,
       matchVars = "mat",
       type = "inner",
       varsToDrop2 = "ref",
       overwrite=TRUE
       )

我在通知中看到了一个关于出发地和目的地航班的例子(http://www.revolutionanalytics.com/sites/default/files/data-step-white-paper.pdf),但我希望我的输出只有匹配级别的数量。我在两个数据集中都有唯一的级别,级别是 ID 号(带有字母,所以我不能将它们传递给数值)。

非常感谢提前

欧列尔

4

2 回答 2

1

除了 Derek 所说的之外,您还可以使用dplyrXdf包,它将为您处理这些和类似的因素相关问题。

devtools::install_github("RevolutionAnalytics/dplyrXdf")
library(dplyrXdf)

all_data_2015 <- inner_join(cible_2015_xdf, data_2015, by="mat")

* 披露:我写了 dplyrXdf。

于 2016-03-11T12:43:47.663 回答
1

在合并之前,您需要重新调整因子以具有相同的水平。

new_levels <- unique(c(rxGetVarInfo(cible_2015_xdf, varsToKeep = "mat")[[1]][["levels"]],
                       rxGetVarInfo(data_2015, varsToKeep = "mat")[[1]][["levels"]]))

rxFactors(inData = cible_2015_xdf, outFile = cible_2015_xdf, 
          factorInfo = list(mat = list(newLevels = new_levels)),
          overwrite = TRUE)
rxFactors(inData = data_2015, outFile = data_2015, 
          factorInfo = list(mat = list(newLevels = new_levels)),
          overwrite = TRUE)

rxMergeXdf(inFile1 = cible_2015_xdf, inFile2 = data_2015,
           outFile = all_data_2015,
           matchVars = "mat",
           type = "inner",
           varsToDrop2 = "ref",
           overwrite=TRUE)
于 2016-02-18T18:28:51.800 回答