我在 MS Visual Studio 中使用 RevoScaleR 包,我被困在一个步骤上。
我有一个 XDF 文件,其中有一列名为“Total_Admits_Pred”。我有另一个 XDF 文件,其中有一列名为“Total_Admits”。
两个 XDF 文件的行数相同。我想将这两个 XDF 文件合并到一个包含这两列的 XDF 文件中。我怎么能那样做?
谢谢!
托马斯
我在 MS Visual Studio 中使用 RevoScaleR 包,我被困在一个步骤上。
我有一个 XDF 文件,其中有一列名为“Total_Admits_Pred”。我有另一个 XDF 文件,其中有一列名为“Total_Admits”。
两个 XDF 文件的行数相同。我想将这两个 XDF 文件合并到一个包含这两列的 XDF 文件中。我怎么能那样做?
谢谢!
托马斯
您可以使用以下命令将列添加到现有 xdf 文件rxDataStep
:
xdf1 <- RxXdfData("file1.xdf") # dataset containing Total_Admits_Pred
xdf2 <- RxXdfData("file2.xdf") # dataset containing Total_Admits
rxDataStep(xdf1, xdf2, varsToKeep="Total_Admits_Pred", append="cols")
这将导致file2.xdf
包含其所有预先存在的列,加上Total_Admits_Pred
.
另一种方法是使用 dplyrXdf 包:
devtools::install_github("RevolutionAnalytics/dplyrXdf")
df <- data.frame(Total_Admits_Pred=xdf1$Total_Admits_Pred,
Total_Admits=xdf2$Total_Admits)
这将创建一个仅包含您想要的两列的内存数据框。与另一个答案相比,这样做的优点是它只将这两列读入内存。
你会做这样的事情:
xdf_df1 <- rxImport("<path/to/xdf1>")
xdf_df2 <- rxImport("<path/to/xdf2>")
xdfOut <- RxXdfData("<path/to/merged/xdf>") # Should not already exist
# This assumes that xdf2 was the one containing "Total_Admits_Pred"
# and that xdf1 contained "Total_Admits", you'll have to adjust this
# based on your data.
xdf_df1[["Total_Admits_Pred"]] <- xdf_df2$Total_Admits_Pred
# Verify the Data Frame is correct
head(xdf_df1)
# Export it
rxDataStep(inData = xdf_df1, outFile = xdfOut)