2017-07-06 1 views
-1

J'essaie de compter le nombre de cellules supérieures à 0 par groupe, et j'ai besoin d'aide pour l'aborder.Nombre de cellules supérieur à 0 par groupe

Mes données ressemble à ceci:

Group Number of Shoes 
    1     0 
    1     1 
    1     2 
    2     0 
    2    NA 
    2     1 
    3     1 
    3     2 
    3     2   

Et je veux ceci:

Group  Shoe owners 
    1     2 
    2     1 
    3     3 

Répondre

1

Vous pouvez le faire simplement avec:

aggregate(Number.of.Shoes ~ Group, df, function(x) sum(x > 0, na.rm = TRUE)) 

Le résultat:

Group Number.of.Shoes 
1  1    2 
2  2    1 
3  3    3 

Cela peut aussi être fait avec dplyr package:

library(dplyr) 
df %>% 
    group_by(Group) %>% 
    summarise(counts = sum(Number.of.Shoes > 0, na.rm = TRUE)) 
+0

Devrait être 'somme (x> 0, na.rm = TRUE)' – brittenb

+1

@brittenb mis à jour :-) – h3rm4n

0

nous pouvons également utiliser data.table

library(data.table) 
setDT(df1)[Number.of.Shoes >0, .(Shoe.Owners = .N), Group] 
#  Group Shoe.Owners 
#1:  1   2 
#2:  2   1 
#3:  3   3