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