我想填写这个费率列的NA(字符class)

I want to fill NA of this rate column (character class)

我有这样的数据:

  rate
1  30%
2  50%
3  NA
4  2.65%
5. NA

并且我想将此比率列的 NA 填写为此总列值的平均值。由于比率列是字符 class。我不知道该怎么做: 我想要这样的结果:(30%+50%+2.65%)/3=27.55%

  rate 
1  30%
2  50%
3  27.55%
4  2.65%
5. 27.55%

因为费率列是字符 class。我不知道该怎么做。非常感谢!!

我可以为您提供这个解决方案,但也许 R-tag 的一些专业用户会建议更优雅的答案。

您的数据:

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

在计算mean

之前去掉我们的%
library(dplyr)
df1 <- mutate_all(df, function(x) as.numeric(sub("%","",x)))

将 NA 替换为我们的平均值:

df1[is.na(df1)] <- colMeans(df1, na.rm = TRUE)

结果:

df1 %>% 
    mutate(across(everything(), ~paste0(., "%")))

    rate
1    30%
2    50%
3 27.55%
4  2.65%
5 27.55%