簡體   English   中英

用因子變量替換數據框中的NA

[英]Replace NA in a data frame with factor variables

我想創建一個函數,用數據框的因子變量中的文本“ NR”替換NA。

我在網上找到了下面的代碼,效果很好:

i <- sapply(data_5, is.factor) # Identify all factor variables in your data
data_5[i] <- lapply(data_5[i], as.character) # Convert factors to character variables
data_5[is.na(data_5)] <- 0 # Replace NA with 0
data_5[i] <- lapply(data_5[i], as.factor) # Convert character columns back to factors

但是我想在一個名為“ remove_na_factor”的函數中轉換此代碼。 我嘗試如下:

remove_na_factor <- function(x){
  i <- sapply(x, is.factor) # Identify all factor variables in your data
  x[i] <- lapply(x[i], as.character) # Convert factors to character variables
  x[is.na(x)] <- "NR" # Replace NA with NR
  x[i] <- lapply(x[i], as.factor) # Convert character columns back to factors

}

當我在具有NA值的數據幀上運行該函數時,什么也沒有發生……預先感謝您的幫助。

只需在函數末尾添加return(x)

remove_na_factor <- function(x){
  #your function body
  return(x)
}

您還可以使用tidyverse方法獲得相同的結果

library(tidyverse)
x %>% 
  mutate_if(is.factor, as.character) %>%   # Convert factors to character variables
  mutate_if(is.character, replace_na, "NR") %>% # Replace NA with NR
  mutate_if(is.character, as.factor)       # Convert character columns back to factors  

暫無
暫無

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

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