使用R语言包tidyverse中的across,选择性对类型为数字的列进行操作,在其中找到NA值,并填充
使用across函数可以方便地对多个列进行相同的操作。在操作之前,我们可以使用select函数选择想要操作的列,并使用is.numeric函数选择其中的数字列。然后,可以使用mutate和across函数对这些列进行操作。
具体实现如下:
library(tidyverse)
# 创建一个包含NA值的数据框
df <- tibble(
id = 1:5,
x = c(1, 2, NA, 4, 5),
y = c(NA, 2, 3, 4, 5),
z = c("a", "b", "c", "d", "e")
)
# 选择数字列,并使用across函数填充NA值
df %>%
select_if(is.numeric) %>% # 选择数字列
mutate(across(everything(), ~ifelse(is.na(.), 0, .))) # 填充NA值
# 输出结果如下:
# A tibble: 5 x 3
x y id
<dbl> <dbl> <int>
1 1 0 1
2 2 2 2
3 0 3 3
4 4 4 4
5 5 5 5
在这个例子中,我们选择数字列x和y,并使用across函数将它们的NA值填充为0。因为id列不是数字列,所以它被排除在外。
原文地址: https://www.cveoy.top/t/topic/m4R 著作权归作者所有。请勿转载和采集!