将XML文件合并到R中的数据框时保留变量的顺序

时间:2013-10-24 07:54:25

标签: xml r sorting dataframe odk

我有一个充满XML文件的目录,我想将其合并到一个数据框中。 XML文件是ODK调查的输出,仅包含受访者未留空的变量的测量值。导入,取消列出和合并时,问题的原始顺序将丢失。我有(我可以制作)一个数据框,其中一列中的问题和第二列中的顺序。如何使用该数据帧重新排序结果数据框?

以下是一个示例工作流程:

library(XML)
filenames = list.files(,recursive=TRUE)

a = xmlToList(filenames[1])
b = data.frame(t(unlist(a)))

for (i in 2:length(filenames)){
    b = xmlToList(filenames[i])
    b = data.frame(t(unlist(b)))
    a = merge(a,b,all=TRUE)
    print(paste("merged ",i))
}

现在可重现的部分;这是一个示例ab

a = data.frame(v1=2, v5=2, v8=1)
b = data.frame(v1=2, v2=4, v8=3)
m = merge(a,b,all=TRUE)

这给了我:

R> m
  v1 v8 v5 v2
1  2  1  2 NA
2  2  3 NA  4

我(可以制作)一个如下所示的数据框:

orderframe = data.frame(varname=c("v1", "v2", "v5", "v8"),
                         order = c(1, 2, 5, 8))

如何使用orderframem的列进行排序?

1 个答案:

答案 0 :(得分:1)

我不太清楚你的意思是“对列进行排序”。如果你的意思是,重新安排列,以便第1列为v1,第2列为v2, column 3 is v5`等,那么

m[,as.character(orderframe$varname)]

as.character的原因是varname是一个因素。