0

我有一个充满 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))
}

现在是可重现的部分;这是一个示例a,并且b

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))

如何使用orderframe对 的列进行排序m

4

1 回答 1

2

我不太确定您的意思是“对列进行排序”。如果你的意思是,重新排列列,使第 1 列是v1,第 2 列是v2, column 3 isv5`,等等,那么这个

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

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

于 2013-10-24T08:25:34.670 回答