Disons que j'ai une matrice avec (r1, ... rm) lignes et (c1, c2, ... cn) tous les éléments sont des 0 et des 1.Calcul des nombres de 0 et 1 pour différentes combinaisons de colonnes
Je voudrais compter le nombre total de 0 et de 1 pour différentes combinaisons: par exemple, c1 & c2, c1 & c3, c1 & c3, c1 & c2 & c3, c1 & c3 & c4.
Existe-t-il un moyen efficace de les compter? Je le fais mal comme ça, où les données sont ma matrice.
is.one <- function(data,zero.one)
{
#zero.one is logical , T, counting 1, otherwise 0s.
if (zero.one)
return (data==1)
else
return (data==0)
}
sum.one <- function(data, comb, zero.one)
{
#comb is one of the combinations as a vector
index<- rep(T,nrow(data))
for (i in 1: length(comb))
{
# assuming i-th column is the i-th element of combination
index <- is.one(data[,i], zero.one[i])
data <- data[index,]
}
return(sum(index))
}
Exemples:
sum.one (data, c("c1","c2"), c(1,1))
sum.one (data, c("c1","c2","c3"), c(1,1,1))
sum.one (data, c("c1","c2","c3"), c(1,1,0))
Je préfère ne pas calculer c1 ou c2 pour chaque combinaison ils apparaissent, et l'indice gardant pourrait être un problème de mémoire lorsque m (nrow (données)) est grand .
Tout conseil serait apprécié.
Quel est le motif pour l'importation 'reshape2'? – Bernhard
Cela fonctionne, mais je pense que mes fonctions fonctionnent aussi, mais pas de mémoire efficace. Si je veux savoir c1 &! C4 & c5, alors j'ai besoin de le calculer à partir de zéro, mais vous savez quelles lignes sont c1 &! C4 d'en haut. –
Désolé, le reshape2 - import n'était pas nécessaire. Je l'ai enlevé, merci de le signaler. – brettljausn