【问题标题】:Filtering data from multiples CSV and merge them into 1 in R从多个CSV过滤数据并将它们合并为R中的1
【发布时间】:2019-07-21 09:03:18
【问题描述】:

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

每个 CSV 在以下列中计数,根据行数不同:

SNP.NameiHS.CHRiHS.POSITIONiHS.iHS iHS..log10.p.value.frequency.class..mrkfrequency.class.mean.log.iHHA.iHHD..frequency.class.sd.log.iHHA.iHHD..

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

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

【问题讨论】:

标签: r csv dplyr


【解决方案1】:
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")

【讨论】:

  • 只是为了帮助您收紧而不是发布单独的答案,您可以在第一个 map 中使用 readr::read_csv 作为第二个参数,因为文件路径将作为 @987654324 传递@的第一个论点。您也可以在上面的行中使用map_dfr 跳过bind_rows
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2022-01-27
相关资源
最近更新 更多