Как я могу подсчитать количество строк в нескольких файлах .csv, соответствующих условию, чтобы отобразить их на гистограмме в R? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть папка с множеством файлов .csv, каждый из которых содержит список аннотированных вариантов последовательности. Я хотел бы построить гистограмму количества вариантов somati c в каждом файле - есть столбец Origin со значением «somati c» или «зародышевый путь».

Мне удалось для построения графика общего количества вариантов путем подсчета строк в каждом файле с помощью следующего кода:

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")

Хотя это сработало для создания гистограммы для общего количества вариантов в файле, я не уверен, где можно было бы добавить условие, определяющее подсчет только тех строк, которые удовлетворяют условию «somati c».

Любые советы будут очень признательны.

1 Ответ

0 голосов
/ 09 июля 2020

Я бы сделал это с помощью a for l oop, который выполняет следующие шаги:

  1. Прочтите таблицу
  2. Добавьте сомати c варианты
  3. Добавьте варианты зародышевой линии

Вот стартер, в котором количество вариантов хранится во внешних переменных в l oop, а затем l oop просто добавляет их к вариантам из нового файла читать. В конечном итоге ваши переменные сохранят общее количество вариантов, если у вас есть столбец с именем «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")
  
}

Пожалуйста, предоставьте минимальную информацию для воспроизведения ситуации, если вы хотите получить более точную ответ. Надеюсь, я дал вам общее представление. Лучшее

...