如何用众数替换缺失值

How to replace Missing Value with Mode

data <- c("SW",  "E",   "N",   "WNW", "SSE", "SE",  "SE",  "SE",  "E",   "S",   "SE",  "E",   "S",  
 "WNW", "S",   "SE",  "WSW","SW", "NNE","NNW","N",  "ENE","S",  NA ,"SSE","E", 
 "E",  "S",  "SE", "SSW","E",  "E",  "WNW","NW", "ESE","ESE","NW", "E",  NA)

我是 R 的新手。此属性中有一些缺失值。我想用模式归因代替它们。我应该怎么办?感谢您的帮助!

基于this answer

data <- c("SW",  "E",   "N",   "WNW", "SSE", "SE",  "SE",  "SE",  "E",   "S",   "SE",  "E",   "S",  
 "WNW", "S",   "SE",  "WSW","SW", "NNE","NNW","N",  "ENE","S",  NA ,"SSE","E", 
 "E",  "S",  "SE", "SSW","E",  "E",  "WNW","NW", "ESE","ESE","NW", "E",  NA)


Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

data[is.na(data)] <- Mode(data)
data

 [1] "SW"  "E"   "N"   "WNW" "SSE" "SE"  "SE"  "SE"  "E"   "S"   "SE"  "E"   "S"   "WNW" "S"   "SE"  "WSW" "SW"  "NNE" "NNW" "N"   "ENE" "S"  
[24] "E"   "SSE" "E"   "E"   "S"   "SE"  "SSW" "E"   "E"   "WNW" "NW"  "ESE" "ESE" "NW"  "E"   "E"