在目录中,例如"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编写它?
答案 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
})
我没有测试代码,但是应该稍微修补一下。