![](/img/trans.png)
[英]How to create a large .csv file from 4 folders containing 100 files each, using an R code?
[英]Create folders with csv files in R from a dataframe
我有一个包含多个变量的 csv 文件,每个变量都有几种模式,如下图所示:
Region Crop Date Product
a aa aaa aaaa
a dd ddd ssss
b ss eee dddd
b cc fff ffff
c vv fff gggg
c gg ddd rrrr
d ff sss tttt
d rr ggg gggg
我想根据“区域”变量的模式创建几个文件夹,里面有几个 .csv 文件,根据“裁剪”变量的模式获取文件夹,如图片区域文件夹
并且在每个文件夹中都有用于裁剪的文件,例如图片裁剪文件
总之,我想按地区按作物获取数据。 我可以使用库“tidyverse”按裁剪或按区域获取数据,但要合并两个“每个区域文件夹的裁剪文件”,如果您能帮助我并提前感谢您,我将无法做到。
1.制作可重现的示例数据
df <- data.frame(Region = c("a", "a", "b", "b", "c", "c"),
Crop = c("aa", "dd", "ss", "cc", "vv", "gg"),
Date = c("aaa", "ddd", "eee", "fff", "fff", "ddd"),
Product = c("aaaa", "ssss", "dddd", "ffff", "gggg", "rrrr"),
stringsAsFactors = FALSE)
2. 循环遍历 Region 和 Crop 的unique
值,提取各个文件的数据并将它们写入磁盘。
# For each unique Region
#
for(r in unique(df$Region)) {
# Extract region data
#
region_data <- df[df$Region %in% r, ]
# For each unique Crop within this Region
#
for (c in unique(region_data$Crop)) {
# Extract this region-crop data
#
region_crop_data <- region_data[region_data$Crop %in% c, ]
# Create directory if necessary (would raise warning if directory already exists)
#
if (!dir.exists(r)) dir.create(r, recursive = TRUE)
# Finally save region-crop data to csv
#
write.csv(region_crop_data, file.path(r, paste0(c, ".csv")), row.names = FALSE)
}
}
循环遍历行,如果文件夹不存在则创建文件夹,然后将文件写出:
for(i in seq(nrow(df))){
myDir <- paste0(df$Region[ i ], "/")
myCSV <- paste0(myDir, df$Crop[ i ], ".csv")
if(!dir.exists(myDir)) dir.create(myDir)
# do some stuff
# myResult <- ...
write.csv(myResult, myCSV)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.