R语言批量处理1——输出list文件及数据框长宽转换

1、问题一,

如图1原始数据列,我想把数据列变成图2的格式,废了好大力气也没做完成,不过还好,最后能勉强用,以后改进。
图1图2

2、解决办法

1)我很快想到用reshape2包中的数据列转换中长转宽dcast,但是,遗憾的是我发现只能转换其中一个变量,如此多的变量我不能一个个转换后再合并吧,工作量不小,以前也遇到过如此情况,经常逃避解决,今天,我选择了勇敢面对。一步步来吧。
2)我发现value.var可以赋值你想要的转换变量。然后我将我第一行所有的变量名赋值给colnameyieldc2。

colnameyieldc2 <- colnames(yieldc2);colnameyieldc2
colnameyieldc2[1]
dcast(yieldc2,site+N+D~V,value.var = colnameyieldc2[1])

3)这样貌似可以写个方程计算了,然后直接吧b(n),就得到了你想要的那个变量的转换。

b <- function(x) {
  a <- dcast(yieldc2,site+N+D~V,value.var = colnameyieldc2[x])
  return(a)
}

4)但是我懒,我想要一键就能得到的全部的转换,在此附上这篇文章给的启示,表示尊重。
R语言︱list用法、批量读取、写出数据时的用法

file=list()    ###新建list文件
data.list<-list()       ###新建list数据文件
xlsxfile=paste(colnameyieldc2,".xlsx",sep="")    ###命名输出文件名
xlsxfile[1]   
for (i in 1:22) {
  data.list[[i]]<- b(i)     ###赋值
  file[[i]]=paste("C:/Users/alxh/Desktop/",xlsxfile[i],sep="")               ###输出文件在桌面,
  write.xlsx(data.list[[i]],file[[i]])   ###输出
}

5)至此,你会得到一堆excel文件在你的桌面,
在这里插入图片描述
6)批量导入excel文件,借用方法来自
R语言-基础操作(批量数据读取和输出)

path <- "C:/Users/alxh/Desktop/修改"    ###文件路径
fileNames <- dir(path)  ###提取所有文件名
fileNames   ##查看
filePath <- sapply(fileNames, function(x){
  paste(path,x,sep = '/')})                       ####循环迭代输出所有文件路径
data <- lapply(filePath,function(x){
  read.xlsx( x,1)                             ####循环迭代导入所有文件命名data,1表示sheet=1
})
> class(data)
[1] "list"

7).xlsx文件读取需要xlsx包(可能不太好装需要rJava配置),当然.csv更好个人觉得。

是否有更好的方法呢?欢迎评论。。。

猜你喜欢

转载自blog.csdn.net/LeaningR/article/details/106473965