【发布时间】:2022-06-22 07:23:02
【问题描述】:
几年前我发现了 R,它在清理数据帧、准备一些数据和处理其他基本任务方面非常方便。
现在我想尝试使用 R 来应用基本处理,但同时对存储在不同文件夹中的许多不同文件进行处理。
这是我想改进为一个函数的脚本,它可以循环遍历我的文件夹“dataset_2006”和“dataset_2007”来完成所有工作。
library(dplyr)
library(readr)
library(sf)
library(purrr)
setwd("C:/Users/Downloads/global_data/dataset_2006")
shp2006 <- list.files(pattern = 'data_2006.*\\.shp$', full.names = TRUE)
listOfShp <- lapply(shp2006, st_read)
combinedShp <- do.call(what = sf:::rbind.sf, args=listOfShp)
#import and merge CSV files into one data frame
folderfiles <- list.files(pattern = 'csv_2006_.*\\.csv$', full.names = TRUE)
csv_data <- folderfiles %>%
set_names() %>%
map_dfr(.f = read_delim,
delim = ";",
.id = "file_name")
new_shp_2006 <- merge(combinedShp, csv_data , by = "ID") %>% filter(label %in% c("AR45T", "GK879"))
st_write(new_shp_2006 , "new_shp_2006.shp", overwrite = TRUE)
setwd("C:/Users/Downloads/global_data/dataset_2007")
shp2007 <- list.files(pattern = 'data_2007.*\\.shp$', full.names = TRUE)
listOfShp <- lapply(shp2007, st_read)
combinedShp <- do.call(what = sf:::rbind.sf, args=listOfShp)
#import and merge CSV files into one data frame
folderfiles <- list.files(pattern = 'csv_2007_.*\\.csv$', full.names = TRUE)
csv_data <- folderfiles %>%
set_names() %>%
map_dfr(.f = read_delim,
delim = ";",
.id = "file_name")
new_shp_2007 <- merge(combinedShp, csv_data , by = "ID") %>% filter(label %in% c("AR45T", "GK879"))
st_write(new_shp_2007 , "new_shp_2007.shp", overwrite = TRUE)
【问题讨论】:
-
那么您的问题到底是什么?也许这样的事情是一个很好的起点:stackoverflow.com/questions/14958516/…。如果您提出更具体的编程问题,这将很有帮助。展示您的尝试并描述您遇到的问题。
-
我想自动化一种方法来运行我的子文件夹“dataset_2006”的脚本,然后是子文件夹“dataset_2007”,而不必通过手动更改我的工作目录来运行它两次,就像我的情况一样发布:/
标签: r