gpt4 book ai didi

使用 for 循环将数据框中的 NA 值替换为中值

转载 作者:行者123 更新时间:2023-12-02 18:48:40 25 4
gpt4 key购买 nike

我一直在尝试找出如何使用 for 循环将某些列中的 NA 值替换为该列的中位数。到目前为止我有这个:

for (i in 1:ncol(merged_df_edit3)){
if(is.na(merged_df_edit3[,i]) == TRUE){
assign(merged_df_edit3[,i],replace_na(median(merged_df_edit3[,i])))
}

}

这可以工作并运行,但会发出警告:

"In if (is.na(merged_df_edit3[, i]) == TRUE) { ... : the conditionhas length > 1 and only the first element will be used"

但是,当我检查数据框时,它根本没有替换任何值。

我使用的数据是数字、日期和字符混合的,就像这样。字符栏中有一些空白,但我不需要它们被填充。

df <- tribble(
~`date Column`, ~`Numeric Column`, ~`Character Column`,
"1/1/2011", 123, "Left",
"1/2/2011", 124, "Right",
"1/3/2011", 125, "Left",
"1/4/2011", NA, "NA",
"1/5/2011", 132, "Right"
)

谢谢!

最佳答案

仅需要一个 for 循环和一个 if 条件。

for(i in 1:ncol(df)){
if(is.numeric(df[[i]])){
na <- is.na(df[[i]])
df[na, i] <- median(df[[i]], na.rm = TRUE)
}
}

关于使用 for 循环将数据框中的 NA 值替换为中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67075477/

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