我是RRE的新手,我遇到了rxMerge功能的问题。
我想通过具有不同级别数的因子列合并两个xdf数据集。我希望内部联接只保留匹配级别。我收到以下错误:
错误:因子键'mat'的级别不匹配。调用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号(带字母,所以我不能将它们传递给数值)。
提前多多感谢
Ouriel
答案 0 :(得分: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)
答案 1 :(得分:1)
除了Derek所说的,您还可以使用dplyrXdf包来处理这些以及类似因素相关的问题。
devtools::install_github("RevolutionAnalytics/dplyrXdf")
library(dplyrXdf)
all_data_2015 <- inner_join(cible_2015_xdf, data_2015, by="mat")
*披露:我写了dplyrXdf。