首页 > 解决方案 > 如何计算满足条件的多个 .csv 文件中的行数,以便将它们绘制在 R 中的条形图上?

问题描述

我有一个包含许多 .csv 文件的文件夹,每个文件都包含来自测序的注释变体列表。我想绘制每个文件中体细胞变体数量的条形图 - 有一个 Origin 列,其值为“体细胞”或“生殖系”。

我已经能够通过使用以下代码计算每个文件中的行来绘制变体的总数:

combined_data <- list.files(pattern = ".csv")

numvar <- lapply(X = combined_data, FUN = function(x) {
  length(count.fields(x, skip = 1))
})

var <- do.call(rbind,numvar)

varn <- c(as.numeric(var))

names <- c(1:41)

table <- data.frame(names, varn)

ggplot(data=table, aes(x=names, y=varn)) + geom_bar(stat="identity")

虽然这可以为每个文件的变体总数创建一个条形图,但我不确定在哪里可以添加一个条件,指定只计算满足“体细胞”条件的行。

任何建议将不胜感激。

标签: rvariant

解决方案


我将使用执行以下步骤的 for 循环来执行此操作:

  1. 阅读表格
  2. 添加体细胞变体
  3. 添加种系变体

这是一个启动器,其中许多变体存储在循环的外部变量中,然后循环只是将它们添加到从新文件读取的变量中。最后,假设您的表中有一个名为“variant.class”的列,您的变量将存储变体的总数


fils <- list.files(pattern = ".csv")

som.vars.n <- 0
germline.vars.n <- 0

for(fil in fils){
  fil.tab <- read.csv(fil)
  som.vars.n <- som.vars.n + sum(fil.tab$variant.class == "somatic")
  germline.vars.n <- germline.vars.n + sum(fil.tab$variant.class == "germline")
  
}

如果您想获得更准确的回复,请提供最少的信息来重现这种情况。希望我给了你一个大致的想法。最好的


推荐阅读