如何计算 R 中两列的缺失值
How to count missing values from two columns in R
我有一个如下所示的数据框
**Contig_A** **Contig_B**
Contig_0 Contig_1
Contig_3 Contig_5
Contig_4 Contig_1
Contig_9 Contig_0
我想计算有多少重叠群 ID(从 Contig_0 到 Contig_1193)不存在于 Contig_B 的任一 Contig_A 列中。
例如:如果我们考虑此数据框总共有 10 个重叠群(Contig_0 到 Contig_9),那么答案将是 4(Contig_2、Contig_6, Contig_7, Contig_8)
创建一个包含您要检查的所有值的向量 (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
来自 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)
我有一个如下所示的数据框
**Contig_A** **Contig_B**
Contig_0 Contig_1
Contig_3 Contig_5
Contig_4 Contig_1
Contig_9 Contig_0
我想计算有多少重叠群 ID(从 Contig_0 到 Contig_1193)不存在于 Contig_B 的任一 Contig_A 列中。
例如:如果我们考虑此数据框总共有 10 个重叠群(Contig_0 到 Contig_9),那么答案将是 4(Contig_2、Contig_6, Contig_7, Contig_8)
创建一个包含您要检查的所有值的向量 (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
来自 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)