R - 在循环中创建多个数据集的子集

标签 r loops

我有大量相当繁重的数据集。我想从每个文件中提取一个子集并将其保存到不同的 csv 文件中(每个数据集一个)。这些是我想为文件夹中的所有文件循环的命令:

df <-read.csv("1985.csv",header=FALSE,stringsAsFactors=TRUE,sep="\t")
df_short <- df[df$V6=="OPP", ]
write.csv(df_short, file = "OPP_1985.csv",row.names=FALSE)
rm(df)
rm(df_short)

这可能是一个非常菜鸟的问题,但我正在努力理解如何去做,所以我将不胜感激!

编辑:

按照@SimonShine 的建议,我运行了这段代码,它成功了!

最佳答案

您没有指定您是要尝试将子集收集到一个数据集中,还是要尝试为每个子集制作一个文件。您引用的 OPP_1985 似乎超出了您编写的代码的范围。您是要引用 df_short 吗?

您可以首先将您想对一个数据文件执行的操作抽象为一个函数,例如:

extract_and_save_from_dataset <- function(csvfile) {
    df <- read.csv(csvfile, header=F, stringsAsFactors=T, sep="\t")
    df_short <- df[df$V6 == "OPP",]
    csvfile_short <- gsub(".csv", "_short.csv", csvfile)
    write.csv(df_short, file=csvfile_short, row_names=F)
}

假设您有一组数据集文件名,您可以多次应用此函数:

# csvfiles <- c("OPP_1985.csv", "OPP_1986.csv", ...)
csvfiles <- list.files("/path/to/my/csvfiles")
for (csvfile in csvfiles) {
    extract_and_save_from_dataset(csvfile)
}

关于R - 在循环中创建多个数据集的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536500/

相关文章:

c++ - 为什么while中的循环计数器超出了整型变量的范围,所以不是无限循环?

r - 在 geom_map 中合并北达科他州和南达科他州两个州

r - 如何隐藏R studio上的值或不显示值但可以使用?

r - 如何在R中导入编号文件

list - Haskell <<循环>>

C语言检查abc字母表

javascript - 如何在 useEffect Hook 内的 setInterval 回调中调用两个函数

javascript - 循环导致 : "TypeError: Undefined is not a function"

r - 甘特式时间线图(以 R 为基础)

r - 每周数据的时间序列分解