首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >replace_na与tidyselect?

replace_na与tidyselect?
EN

Stack Overflow用户
提问于 2021-12-13 21:01:49
回答 1查看 144关注 0票数 7

假设我有一组列的数据框架,在这些列中,我想做相同的NA替换:

代码语言:javascript
复制
dd <- data.frame(x = c(NA, LETTERS[1:4]), a = rep(NA_real_, 5), b = c(1:4, NA))

例如,在上面的数据框架中,我想做一些(比如 replace_na(dd, where(is.numeric), 0) )来替换列ab中的NA值。

我可以

代码语言:javascript
复制
num_cols <- purrr::map_lgl(dd, is.numeric)
r <- as.list(setNames(rep(0, sum(num_cols)), names(dd)[num_cols]))
replace_na(dd, r)

但我在找更整洁的/更地道的/更好的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-13 21:03:47

如果我们需要动态地使用replace处理where(is.numeric),可以将它封装在across

代码语言:javascript
复制
library(dplyr)
library(tidyr)
dd %>%
   mutate(across(where(is.numeric), replace_na, 0))

或者我们可以将replace指定为键/值对的list

代码语言:javascript
复制
replace_na(dd, list(a = 0, b = 0))

可以通过select以编程方式创建属于numeric的列,获取names,转换为带有deframe的键/值对(或在0中使用summarise,然后使用replace_na )

代码语言:javascript
复制
library(tibble)
dd %>% 
  select(where(is.numeric)) %>%
  summarise(across(everything(), ~ 0)) %>%
  replace_na(dd, .)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70340874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档