我有一个充满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
的列进行排序?
答案 0 :(得分:1)
我不太清楚你的意思是“对列进行排序”。如果你的意思是,重新安排列,以便第1列为v1
,第2列为v2, column 3 is
v5`等,那么
m[,as.character(orderframe$varname)]
as.character
的原因是varname
是一个因素。