Как подсчитать пропущенные значения из двух столбцов в R

#r #dataframe #count #missing-data

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом

 **Contig_A**    **Contig_B**   

  Contig_0        Contig_1 
  Contig_3        Contig_5
  Contig_4        Contig_1
  Contig_9        Contig_0
  
 

Я хочу подсчитать, сколько идентификаторов contig (от Contig_0 до Contig_1193) отсутствует ни в одном столбце Contig_A Contig_B.

Например: если мы рассмотрим, что для этого фрейма данных всего 10 границ (от Contig_0 до Contig_9), то ответ будет 4 (Contig_2, Contig_6, Contig_7, Contig_8)

Ответ №1:

Создайте вектор всех значений, которые вы хотите проверить ( all_contig ), который находится Contig_0 Contig_10 здесь. Используется setdiff для поиска отсутствующих значений и length подсчета количества отсутствующих значений.

 cols <- c('Contig_A', 'Contig_B')
#If there are lot of 'Contig' columns that you want to consider
#cols <- grep('Contig', names(df), value = TRUE)

all_contig <- paste0('Contig_', 0:10)

missing_contig <- setdiff(all_contig, unlist(df[cols]))
#[1] "Contig_2"  "Contig_6"  "Contig_7"  "Contig_8"  "Contig_10"

count_missing <- length(missing_contig)
#[1] 5
 

Ответ №2:

Автор: match ,

 x <- c(0:9)
contigs <- sapply(x, function(t) paste0("Contig_",t))
df1 <- data.frame(
  Contig_A = c("Contig_0", "Contig_3", "Contig_4", "Contig_9"),
  Contig_B = c("Contig_1", "Contig_5", "Contig_1", "Contig_0")
)
xx <- c(df1$Contig_A,df1$Contig_B)
contigs[is.na(match(contigs, xx))]

[1] "Contig_2" "Contig_6" "Contig_7" "Contig_8"
 

В вашем случае просто измените x , как x <- c(0,1193)