gpt4 book ai didi

r - 数据框中的所有列 NA 值都用 R 中的中值填充

转载 作者:行者123 更新时间:2023-12-02 18:29:36 24 4
gpt4 key购买 nike

我需要用数据框中每列的中值填充所有数字列的空值。我做了以下代码。

median_forNumericalNulls <- function(dataframe){

nums <- unlist(lapply(dataframe, is.numeric))

df_num <- dataframe[ , nums]

df_num[] <- lapply(df_num, function(x) {
x[is.na(x)] <- median(x, na.rm = TRUE)
x
})

return(dataframe)

}

median_forNumericalNulls(A)

A 是父表,由数值变量和分类变量组成。如何用函数 Median_forNumericalNulls 的输出替换“A”数据帧的列?

有没有更好的方法可以做到同样的事情?

最佳答案

也许我们需要更改函数以直接对列进行子集化并更新列,而不是创建另一个对象然后更新

median_forNumericalNulls <- function(dataframe){

nums <- unlist(lapply(dataframe, is.numeric))

df_num <- dataframe[ , nums]

dataframe[nums] <- lapply(dataframe[nums], function(x) {
x[is.na(x)] <- median(x, na.rm = TRUE)
x
})
dataframe

}

-测试

A <- median_forNumericalNulls(A)

此外,这可以通过 na.aggregate 以紧凑的方式完成

library(zoo)
A <- na.aggregate(A, FUN = median)

或者使用tidyverse

library(dplyr)
A <- A %>%
mutate(across(where(is.numeric),
~ replace(., is.na(.), median(., na.rm = TRUE))))

关于r - 数据框中的所有列 NA 值都用 R 中的中值填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69608720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com