首页 > 解决方案 > 从多个CSV过滤数据并将它们合并为R中的1

问题描述

我很久以前就试图从单打 .csvs 文件中过滤信息,然后将它们合并成一个文件。

每个 CSV 都计入以下列,因行数而异:

SNP.Name iHS.CHR iHS.POSITION iHS.iHS iHS..log10.p.value. frequency.class..mrk frequency.class.mean.log.iHHA.iHHD.. frequency.class.sd.log.iHHA.iHHD..

我想要的是iHS.iHS iHS..log10.p.value.按大于或等于 2 的值过滤每个 CSV,=>2保留其行中的所有其他信息。然后将每个 CSV 中过滤的信息合并到一个唯一的 CSV 文件中。

我一直在 excel 中这样做,但这需要很长时间,我真的很想优化我的工作。我该如何解决这个问题?

标签: rcsvdplyr

解决方案


library(tidyverse)

csv_files <- list.files(path = "my_folder_with_csv_files", pattern = "\\.csv$", full.names = TRUE)

# make a list of data frames of csv files in your directory
list_csv_files <- purrr::map(csv_files, ~readr::read_csv(file = .))

# assuming no errors with import...
# filter each data frame in list by condition specified in question
# then bind/merge data frames in list together into on single data frame
single_csv <- list_csv_files %>% 
  purrr::map(., ~dplyr::filter(., iHS.iHS iHS..log10.p.value. >= 2)) %>% 
  dplyr::bind_rows(.) #similar to do.call("rbind", .)

# export your single csv 
readr::write_csv(single_csv, path = "my_path_to_write_to")

推荐阅读