问题:
R语言批量导入数据生成list表,然后提取每个list表相同变量数据,生成数据框形式data.frame。
一、apply族应用
常用apply、lapply和sapply
二、批量excel数据导入
这个前面文章已经写了,基本思路为
1.赋值文件路径;
2.提取路径下所有文件名dir(path);
3.迭代生成所有文件的路径名,paste(),sapply(),
4.迭代导入所有文件生成list,lapply()。
path <- ("I:\\20200818")
filenames <- dir(path);head(filenames)
filepath <- sapply(filenames, function(x){
paste(path,x,sep = "\\")})
flu_data_18.1 <- lapply(filepath[1:13],function(x){
read.csv(x,sep = ",")})
> class(filepath)
[1] "character"
> class(flu_data_18.1)
[1] "list"
> class(flu_data_18.1[[1]])
[1] "data.frame"
三、list表中的数据提取
1.单个list定位提取
> flu_data_18.1[[1]][c(5,19),c(3,4,9:19)]
Time No. Fo. Fm. X.Fo. Y.II. Y.NPQ. Y.NO. NPQ qN qP
5 02:21:55 1 0.000 2.405 0.792 0.671 0.000 0.329 0.000 0.000 1.000
19 02:26:59 15 0.000 0.996 0.540 0.422 0.339 0.240 1.415 0.717 0.922
2.批量定位提取合并数据框
flu_data_18_1 <- data.frame()
for (i in 1:13) {
df1 <- data.frame(flu_data_18.1[[i]][c(1,15),c(3,4,9:19)])
flu_data_18_1 <- rbind(flu_data_18_1,df1)
}
flu_data_18_1
3.希望可以用apply,尝试多次不行,问题在apply的结果是横向的,我得到的结果本该是44×13的数据框,但用apply得到是2×268。
如有更好的方法请留言,谢谢