M = data.frame( Name = c('name', 'name'), Col1 = c(NA, 1) , Col2 = c(1, 1))
#   Name Col1 Col2
# 1 name   NA    1
# 2 name    1    1
M 
##   Name Col1 Col2
## 1 name   NA    1
## 2 name    1    1
aggregate(M[, 2:3], by = list(M$Name), FUN = mean, na.rm = TRUE)
##   Group.1 Col1 Col2
## 1    name    1    1
aggregate(M[, 2:3], by = list(M$Name), FUN = mean, na.action = na.omit)
##   Group.1 Col1 Col2
## 1    name   NA    1
#ref https://stackoverflow.com/questions/16844613/aggregate-methods-treat-missing-values-na-differently