按列组合的完整案例数

我有一个包含数百列的大型数据库,我想知道两列的每种可能组合有多少完整案例。

例子:

library(data.table)
DT <- data.table(V1 = c(NA, NA, NA, 3, 5),
                 V2 = c("a", "b", "c", NA, NA),
                 V3 = c(1, 5, NA, 4, 5),
                 V4 = c(NA, NA, NA, NA, NA))

# > DT
#    V1   V2 V3 V4
# 1: NA    a  1 NA
# 2: NA    b  5 NA
# 3: NA    c NA NA
# 4:  3 <NA>  4 NA
# 5:  5 <NA>  5 NA

我期望的是这样的:

对角线表示该变量的完整案例数。我想过使用某种 for 循环,但它变得非常麻烦。也许功能/解决方案已经存在?

回答

尝试crossprodis.na

> crossprod(!is.na(DT))
   V1 V2 V3 V4
V1  2  0  2  0
V2  0  3  2  0
V3  2  2  4  0
V4  0  0  0  0

  • Brilliant solution!

以上是按列组合的完整案例数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>