r - 用 R 中所有变量的中位数替换缺失值
问题描述
我必须用所有变量的中位数替换缺失值。我知道如何分别为每个变量执行此操作。
df$x1=ifelse(is.na(df$x1),median(df$x1,na.rm=T),df$x1)
但我有 21 个变量,必须对 x1-x20 中的 20 个变量执行替换。如何一次替换 20 个变量的缺失值?我不想创建 20 个字符串。
解决方案
您可以使用该列dplyr::mutate_at
替换缺失值median
。mutate_at
提供了灵活性(使用start_with
)来选择以 开头的列,X
将对其应用规则。
library(dplyr)
df %>% mutate_at(vars(starts_with("X")), funs(ifelse(is.na(.),median(., na.rm = TRUE),.)))
# ID X1 X2
# 1 a 1 21.0
# 2 b 2 22.0
# 3 c 7 23.0 << X1 was missing
# 4 d 7 24.0 << X1 was missing
# 5 e 7 25.0 << X1 was missing
# 6 f 6 26.0
# 7 g 7 24.5 << X2 was missing
# 8 h 8 24.5 << X2 was missing
# 9 i 9 29.0
# 10 j 10 30.0
样本数据:
df <- data.frame(ID=letters[1:10], X1 = 1:10, X2 = 21:30)
df$X1[3:5] <- NA
df$X2[7:8] <- NA
df
# ID X1 X2
# 1 a 1 21
# 2 b 2 22
# 3 c NA 23
# 4 d NA 24
# 5 e NA 25
# 6 f 6 26
# 7 g 7 NA
# 8 h 8 NA
# 9 i 9 29
# 10 j 10 30
推荐阅读
- typescript - 模块“@react-native-firebase/firestore”没有导出成员“CollectionReference”。ts(2614)
- javascript - 通过单击锚标记触发功能并获取它的所有子项
- r - 使用基础 R 自定义颜色键上的标签
- r - 在 group_by 中存储/保留第二个最小值并使用 Dplyr 进行汇总
- .net-core - .NET 核心标识。使用一两个上下文?
- python - 寻找解决python问题的不同方法
- javascript - Javascript在具有多个参数的json数组中搜索其中一个是数组?
- powershell - 一次替换/重命名 1300 个 .png 文件,cmd 还是 powershell?替换曾经名字的最后 4 位数字
- java - Java/Swing:单击矩形时创建文本字段
- vim - 括号下的行的 Vim 自动缩进