Problem:
感謝R友-Mimi 提供此問題.
Analysis:
本問題是如何找出同時滿足數值大於或等於0.5, 較辛苦的方法是將所有條件用 AND 運算(&)找出其結果. 實務上可考慮邏輯運算特性, 即 TRUE 表示1, FALSE 表示0, 利用 sum( )函數計算加總為12表示該列所有行滿足條件. 因為是每列都要判斷, 因此採用 apply, 第2個參數設定為1表示列運算. 最後以 which 回傳符合條件之指標.
# R code
# 建立矩陣範例 318*12
set.seed(123)
m <- matrix(round(c(runif(318*7), rep(1, 318*5)), 2), ncol=12)
rownames(m) <- paste0("row", 1:318)
head(m)
# 條件篩選
m.check <- (m >= 0.5)
head(m.check)
# 如果整列加總=12,表示所該列所有資料行皆符合篩選條件
ind <- which(apply(m.check, 1, sum) == 12)
ind
m[ind, ]
# end