I have the following dataframe
one <- c(\'one\',NA,NA,NA,NA,\'two\',NA,NA)
group1 <- c(\'A\',\'A\',\'A\',\'A\',\'B\',\'B\',\'B\',\'B\')
group2 <- c(\'C\
with data.table
:
setDT(df)
df[,count_B:=sum(!is.na(one)),by=c("group1","group2")]
gives:
one group1 group2 count_B
1: one A C 1
2: NA A C 1
3: NA A C 1
4: NA A D 0
5: NA B E 1
6: two B E 1
7: NA B F 0
8: NA B F 0
The idea is to sum the true values (1 once converted to integer) where B is not NA
while grouping by group1
and group2
.