对目录中的许多数据帧进行排序

时间:2013-11-26 12:59:48

标签: r sorting dataframe

在目录中,例如"c/Mydata",我有100个名为d1, d2, d3, ..., d100的数据框。数据框采用文本格式保存,扩展名为.dat。每个数据框由相同数量和名称的变量组成;其中一个变量是id。使用R,我想按id对每个数据帧进行排序,并将排序的数据帧保存在同一目录中。也就是说,

setwd("c/Mydata") # setting a working directory take each data frame: d1, d2, d3, ..., d100;
sorted1 = d1[order(d1$id),], sorted2 = d2[order(d2$id),], ..., sorted100 = d100[order(d100$id),] #order each data frame by id
# write the sorted data frames in the same directory - "c/Mydata"

每个数据框由12000个观测值和50多个变量组成。可以采用以下方法对数据帧进行采样:

d1 = data.frame(id = rep(c(1,3,2,5),5), x = round(rexp(20), digits=2), y = round(runif(20), digits=2))
d2 = data.frame(id = rep(c(1,4,3,2),5), x = round(rexp(20), digits=2), y = round(runif(20), digits=2))

是否有一种简单的方法可以在R中执行此操作,而不必加载每个数据集,按id对其进行排序并使用write.table编写它?

1 个答案:

答案 0 :(得分:1)

试试这个:

lapply(list.files(), #get list of files
       function(myfile){
         df <- read.table(myfile, header=TRUE) #read the file
         dfsorted <- df[ order(df$id),] #sort the file
         write.table(dfsorted, paste("sorted",myfile,sep="_")) #write out the sorted file
       })

我没有测试代码,但是应该稍微修补一下。