我有一個data.frame,其中有一列是邏輯的列,如何查找data.frame行的子集中的所有元素是否爲TRUE
> tmp <- data.frame(a=c(13, 23, 52),
+ b=c(TRUE,FALSE,TRUE),
+ c=c(TRUE,TRUE,FALSE),
+ d=c(TRUE,TRUE,TRUE))
> tmp
a b c d
1 13 TRUE TRUE TRUE
2 23 FALSE TRUE TRUE
3 52 TRUE FALSE TRUE
我想計算的摘要列(比如:e)中是邏輯AND
的整個範圍內的邏輯列。換句話說,對於給定的行,如果所有的b:d都是TRUE
,那麼e將是TRUE
;如果任何b:d是FALSE
,那麼e將是FALSE
。
我預期的結果是:
> tmp
a b c d e
1 13 TRUE TRUE TRUE TRUE
2 23 FALSE TRUE TRUE FALSE
3 52 TRUE FALSE TRUE FALSE
我想指出的列由指數的範圍內,因爲我有一堆列,和名稱都很麻煩。下面的代碼工作,但我寧願使用矢量化的方法來提高性能。
> tmp$e <- NA
> for(i in 1:nrow(tmp)){
+ tmp[i,"e"] <- all(tmp[i,2:(ncol(tmp)-1)]==TRUE)
+ }
> tmp
a b c d e
1 13 TRUE TRUE TRUE TRUE
2 23 FALSE TRUE TRUE FALSE
3 52 TRUE FALSE TRUE FALSE
任何方式做到這一點不使用for
循環來通過data.frame的行?
不錯!計算一筆款項已經發生在我身上,但我沒有想過'rowSums'留在行內。謝謝。 – mac 2012-07-09 22:36:01