You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将character类rate列的NA值填充为该列非NA均值

实现方法

你可以按照「字符转数值→计算非NA均值→填充NA值→转回百分比格式」的逻辑实现,以下是两种常用实现方案:

方案1:Base R 实现

首先构造示例数据:

df <- data.frame(
  rate = c("30%", "50%", NA, "2.65%", NA),
  stringsAsFactors = FALSE
)

执行填充逻辑:

# 提取百分比中的数值部分,转为数值型
num_rate <- as.numeric(sub("%", "", df$rate))
# 计算非NA值的均值,保留两位小数
rate_mean <- round(mean(num_rate, na.rm = TRUE), 2)
# 填充NA并转回百分比格式
df$rate <- ifelse(is.na(df$rate), paste0(rate_mean, "%"), df$rate)

输出结果验证:

print(df)
#    rate
# 1   30%
# 2   50%
# 3 27.55%
# 4 2.65%
# 5 27.55%

方案2:tidyverse(dplyr)实现

适合习惯tidyverse语法的场景:

library(dplyr)

df <- df %>%
  mutate(
    num_temp = as.numeric(sub("%", "", rate)),
    rate = ifelse(is.na(rate), paste0(round(mean(num_temp, na.rm = TRUE), 2), "%"), rate)
  ) %>%
  select(-num_temp)

补充说明

如果需要调整百分比的小数保留位数,修改round()函数的第二个参数即可,比如保留1位小数就改为round(..., 1)。

内容的提问来源于stack exchange,提问作者GuiW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:54:08