R语言tidyverse包:填充数字列NA值
使用R语言包tidyverse,选择性对类型为数字的列进行操作,并找到其中的NA值并填充。可以使用dplyr包中的mutate_all()函数来对所有数字列进行操作,使用is.numeric()函数来选择数字列,使用ifelse()函数来替换NA值。下面是一个示例代码:
library(tidyverse)
# 创建一个包含数字和非数字列的数据框
df <- data.frame(
x = c(1, 2, NA, 4),
y = c('a', 'b', 'c', 'd'),
z = c(NA, 5, 6, NA)
)
# 使用mutate_all()函数对所有数字列进行操作
df_filled <- df %>%
mutate_all(
# 选择数字列
.funs = list(
~ifelse(is.numeric(.), # 如果是数字列
ifelse(is.na(.), 0, .), # 如果是NA值,替换为0,否则不变
.) # 如果不是数字列,不变
)
)
# 输出结果
print(df_filled)
输出结果:
x y z
1 1 a 0
2 2 b 5
3 0 c 6
4 4 d 0
在这个示例中,原始数据框df包含三列,其中只有x和z是数字列,而y是字符列。使用mutate_all()函数对所有列进行操作,但是只有数字列受到ifelse()函数的作用。在ifelse()函数中,首先使用is.numeric()函数选择数字列,然后使用is.na()函数选择NA值,将它们替换为0。最后使用mutate_all()函数返回一个新的数据框df_filled,其中所有数字列的NA值都被替换为0。
原文地址: https://www.cveoy.top/t/topic/lCp3 著作权归作者所有。请勿转载和采集!