如何用模式替换缺失值

问题描述

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

我是 R 的新手。此属性中存在一些缺失值。我想用模式插补替换它们。我应该怎么办?感谢您的帮助!

解决方法

this answer 为基础:

data <- c("SW","E","N","WNW","SSE","SE","S","WSW","SW","NNE","NNW","ENE",NA,"SSW","NW","ESE",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"