1

在对具有基于变量的重复 ID 的长表进行子集化后,我试图合并两个 xdf 文件。

假设我有两列:id 和 type

我根据say对原始xdf表进行子集化type = 'type1',并获取第一个xdf文件我根据say对原始xdf表进行子集化type = 'type2',并获取第二个xdf文件

第一个 xdf 文件看起来像(有很多不同的 ID,但我在下面的示例中显示了一个 ID)

id type1
__ ____
1    5

第二个 xdf 文件看起来像(有很多不同的 ID,但我在下面的示例中显示了一个 ID)

id type2
__ ____
1    3

然后,我将两个 xdf 文件合并到另一个 xdf 文件中

rxMerge(file1, file2, outFile = final, autoSort = FALSE, matchVars = 'id', type = 'full', overwrite = TRUE)

我得到两条 id = 1 的记录,如

id type1 type2
__ ____ ______
1    5    NA

1    NA    3

我期待

id type1 type2
__ ____ ______
1    5    3

我究竟做错了什么?

4

1 回答 1

0

嗯...在 RRE 7.4.1 中,您给出的示例对我有用:

# Example data
x <- data.frame(id = 1, type1 = 5)
y <- data.frame(id = 1, type2 = 3)

# Creating XDFs for the example data
file1 <- tempfile(fileext = ".xdf")
rxImport(inData = x, outFile = file1)

file2 <- tempfile(fileext = ".xdf")
rxImport(inData = y, outFile = file2)

# Merging into a third XDF
final <- tempfile(fileext = ".xdf")

rxMerge(inData1 = file1, 
        inData2 = file2, 
        outFile = final, 
        autoSort = FALSE, 
        matchVars = 'id',
        type = 'full',
        overwrite = TRUE)

# Check the output
rxDataStep(final)

所以很难知道会发生什么。设置时会发生什么autoSort = TRUE?你运行的是什么版本的 RRE?(您可以通过加载 RevoScaleR 并运行来获取版本号sessionInfo()

于 2015-11-19T23:12:53.253 回答