某些樣本數據:
n <- 10
dat <- data.frame(A = sample(0:1, n, replace = TRUE),
B = sample(0:1, n, replace = TRUE),
C = sample(0:1, n, replace = TRUE),
D = sample(0:1, n, replace = TRUE))
給定一個號碼來組合列的函數,計算所有的組合和相應的總和:
count.or <- function(dat, n = 2) {
or.sum <- function(cols) sum(rowSums(dat[cols]) > 0)
counts <- combn(colnames(dat), n, FUN = or.sum)
names <- combn(colnames(dat), n, FUN = paste, collapse = "")
setNames(counts, names)
}
在動作:
count.or(dat, 1)
# A B C D
# 6 6 5 9
count.or(dat, 2)
# AB AC AD BC BD CD
# 8 7 9 9 10 9
count.or(dat, 3)
# ABC ABD ACD BCD
# 9 10 9 10
count.or(dat, 4)
# ABCD
# 10
或在一個電話:
unlist(lapply(1:4, count.or, dat = dat))
# A B C D AB AC AD BC BD CD ABC ABD ACD BCD ABCD
# 6 6 5 9 8 7 9 9 10 9 9 10 9 10 10
結合二進制列A和B是什麼意思?計算OR還是AND? – flodel
或者,計算出現在列A或列B中的所有1。 – DrPaulVella
嗯,我不確定你知道我所指的是OR ...所以只是爲了澄清,如果A是(0,0,1,1)而B是(0,1,1,0),那麼A和B結合的結果應該是3還是4? – flodel