r - 在 `dplyr` 中,当使用 `pivot_wide` 时,我想同时替换 'NA'

标签 r dplyr pivot tidyverse

dplyr中,当使用pivot_wide时,我想同时替换'NA'。 这是下面的代码,它们不起作用。任何人都可以帮忙吗?谢谢!

library(tidyverse)
test_data <- data.frame(category=c('A','B','A','B','A','B','A','B'),
                        sub_category=c('a1','b1','a2','b2','a1','b1','a2','b2'),
                        sales=c(1,2,4,5,8,1,4,6))

#method1: Error: Can't convert <double> to <list>.
test_data %>% pivot_wider(names_from = 'category',
                          values_from = 'sales',
                          values_fill = 0) %>% unnest() 


#method2: code can't run
test_data %>% pivot_wider(names_from = 'category',
                          values_from = 'sales') %>% unnest() %>% 
  as.data.frame() %>% 
  mutate(across(where(is.numeric),function(x) stringr::str_replace('NA',0)))

最佳答案

test_data %>% 
     pivot_wider(names_from = 'category',  values_from = 'sales', 
                 values_fn = list, values_fill = list(0))  %>%
     unnest(c(A, B))

# A tibble: 8 x 3
  sub_category     A     B
  <chr>        <dbl> <dbl>
1 a1               1     0
2 a1               8     0
3 b1               0     2
4 b1               0     1
5 a2               4     0
6 a2               4     0
7 b2               0     5
8 b2               0     6

关于r - 在 `dplyr` 中,当使用 `pivot_wide` 时,我想同时替换 'NA',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70269158/

相关文章:

R:如何将日期与 %b 转换为不同的语言

r - 在 R dplyr 中,为什么在 count() 之后需要 ungroup() ?

r - 使用 dplyr mutate 自动生成新的变量名

SQL 服务器 : Crosstab/Pivot Price List

sql - 如何使用 SQL Server 2005 转换数据

r - 每周数据的时间序列分解

r - ggplot2:适合 geom_smooth() 像分类变量是连续的

r - 我在 data.table 中复制行的方法有效吗?

r - 将列总计添加到数据框 R 中的新行

Mysql获取带计数的子列表