Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Allow grouping with NA in aggregate function

Tags:

r

aggregate

Here is dummy data

temp.df <- data.frame(count = rep(1,6), x = c(1,1,NA,NA,3,10), y=c("A","A","A","A","B","B"))

When I apply aggregate as given below:

aggregate(count ~ x + y, data=temp.df, FUN=sum, na.rm=FALSE, na.action=na.pass)

I get:

   x y count
1  1 A     2
2  3 B     1
3 10 B     1

However, I would like the following output:

   x  y count
1  NA A     2
2  1  A     2
3  3  B     1
4 10  B     1

Hope it makes sense.Thanks in advance.

like image 890
user3212376 Avatar asked Mar 17 '26 02:03

user3212376


1 Answers

Use addNA to treat NA as a distinct level of x.

> temp.df$x <- addNA(temp.df$x)
> aggregate(count ~ x + y, data=temp.df, FUN=sum, na.rm=FALSE, na.action=na.pass)
     x y count
1    1 A     2
2 <NA> A     2
3    3 B     1
4   10 B     1
like image 102
Hong Ooi Avatar answered Mar 19 '26 02:03

Hong Ooi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!