簡體   English   中英

將NA因子水平的多列替換為“無”

[英]Replacing multiple columns with NA Factor Levels with “None”

我使用的是“房價:高級回歸技術”數據集,該數據集包含多個因子變量,其水平之間具有NA。 考慮列PoolQL,Alley和MiscFeatures。 我想在一個函數中將所有這些NA替換為None ,但是我沒有這樣做。 到目前為止已經嘗試過:

MissingLevels <- function(x){
  for(i in names(x)){
  levels <- levels(x[i])
  levels[length(levels) + 1] <- 'None'
  x[i] <- factor(x[i], levels = levels)
  x[i][is.na(x[i])] <- 'None'
  return(x)
  }
}

MissingLevels(df[,c('Alley', 'Fence')])

apply(df[,c('Alley', 'Fence')], 2, MissingLevels)

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

有幾種方法,例如:

x <- data.frame(another = 1:3, Alley = c("A", "B", NA), Fence = c("C", NA, NA))

選項1:使用forcats

x[,c("Alley", "Fence")] <- lapply(x[,c("Alley", "Fence")], fct_explicit_na, na_level = "None")

  another Alley Fence
1       1     A     C
2       2     B  None
3       3  None  None

選項2:

x[,c("Alley", "Fence")] <- lapply(x[,c("Alley", "Fence")], function(x){`levels<-`(addNA(x), c(levels(x), "None"))})

PS:第二個答案是@G啟發的。 Grothendieck 在R中的因子列中替換<NA>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM