可以使用如下代码找到数据框中所有类型为数字的列,然后使用is.na()函数找到其中的NA值,并使用mean()函数求出该列的平均值,最后使用ifelse()函数将NA值替换为该列的平均值:

# 生成示例数据框
df <- data.frame(a = c(1, 2, 3, 4, NA),
                 b = c("a", "b", "c", "d", "e"),
                 c = c(NA, 5, 6, NA, 8),
                 d = c(9, 10, NA, 12, 13),
                 e = c("f", "g", "h", "i", "j"))

# 找到所有类型为数字的列
num_cols <- sapply(df, is.numeric)

# 使用ifelse()函数将NA值替换为该列的平均值
df[, num_cols] <- sapply(df[, num_cols], function(x) {
  ifelse(is.na(x), mean(x, na.rm = TRUE), x)
})

# 查看处理后的数据框
df

输出结果如下:

    a b   c    d e
1 1.0 a 5.8  9.0 f
2 2.0 b 5.0 10.0 g
3 3.0 c 6.0 11.5 h
4 4.0 d 5.8 12.0 i
5 2.5 e 8.0 13.0 j

可以看到,第一列中的NA值被替换为了该列的平均值2.5。

R语言选择性对类型为数字的列进行操作,在其中找到NA值,并填充

原文地址: https://www.cveoy.top/t/topic/m4N 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录