xiaotu9316 2024-06-07 19:54 采纳率: 88.6%
浏览 15
已结题

R语言:读取指定文件名的csv文件,并汇总数据到一个excel表

R语言:读取指定文件名的csv文件,并汇总数据到一个excel表:

1、当前目录下,多个文件夹(文件夹名称如:20240607170515_GCST90274765.csv_gen_samplesize_acute_pancreatitis_bzbt.tsv_for_coloc)
2、每个文件夹下,多个文件(含多个csv文件)
3、其中,每个文件下都有名为"coloc共定位结果.csv"的文件,内容如下:

img

4、目的:
(1)只读取文件名为"coloc共定位结果.csv"的文件
(2)提取“coloc共定位结果.csv”的文件、合并,生成如下格式的excel文件:

img

①exposure列的内容:为所提取的"coloc共定位结果.csv"所在的文件夹名称中:"GCST90274765"。

如:文件夹名称为:"20240607170515_GCST90274765.csv_gen_samplesize_acute_pancreatitis_bzbt.tsv_for_coloc"
   exposure列的内容为:"GCST90274765"

②其它列的内容:从“coloc共定位结果.csv”中提取的 "nsnps"——"PP.H4.abf"右侧的行值(存入excel时有行列转置)
③生成的excel文件名:“共定位结果汇总”

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-07 20:00
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要完成这个任务,你可以使用R语言中的几个包,例如list.files来列出目录下的文件,read.csv来读取CSV文件,以及write.xlsx来写入Excel文件。以下是一个简单的R脚本示例,它应该可以帮助你完成这个任务:

    library(openxlsx)
    
    # 1. 遍历当前目录下的所有文件夹
    folders <- list.dirs(full.names = FALSE)
    
    # 2. 创建一个空的数据框来存储所有读取的数据
    all_data <- data.frame()
    
    # 3. 遍历每个文件夹,查找并读取"coloc共定位结果.csv"文件
    for (folder in folders) {
      # 检查文件夹中是否存在目标文件
      target_file <- file.path(folder, "coloc共定位结果.csv")
      if (file.exists(target_file)) {
        # 读取CSV文件
        coloc_data <- read.csv(target_file, header = TRUE)
        
        # 提取需要的数据列
        required_columns <- c("nsnps", "PP.HO.abf", "PP.H1.abf", "PP.H2.abf", "PP.H3.abf", "PP.H4.abf")
        extracted_data <- coloc_data[required_columns]
        
        # 4. 将"exposure"列设置为文件夹名称中的特定字符串
        # 提取"GCST90274765"字符串
        exposure <- unlist(strsplit(basename(folder), "_"))[1]
        
        # 将提取的数据和exposure列合并
        extracted_data$exposure <- exposure
        
        # 将合并后的数据添加到所有数据的列表中
        all_data <- rbind(all_data, extracted_data)
      }
    }
    
    # 5. 转置数据,因为需要将行变成列
    transposed_data <- t(all_data[, -1])  # 排除exposure列
    
    # 6. 将转置后的数据保存为Excel文件
    write.xlsx(transposed_data, "共定位结果汇总.xlsx", row.names = FALSE)
    

    这段代码首先使用list.dirs函数列出当前目录下的所有文件夹,然后遍历这些文件夹,检查是否存在名为"coloc共定位结果.csv"的文件。如果存在,它将读取文件,提取所需的列,并设置"exposure"列。最后,它将所有数据合并,转置,然后保存为一个Excel文件。

    请注意,这段代码假设每个文件夹的名称都包含"GCST90274765"字符串,并且这个字符串是文件夹名称的第一个部分。如果文件夹的命名规则有所不同,你可能需要调整字符串提取的逻辑。

    至于参考资料,你可以查看以下链接来了解更多关于R语言中处理文件和Excel文件的包和函数:

    希望这能帮助你完成任务!如果你有任何问题或需要进一步的帮助,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月7日