r - tidyr::pivot_wider 中的 values_fill 参数不起作用

标签 r

我有这个数据:

df_1 <- data.frame(
  x = c(NA, 1, 2, NA, 6), 
  y = c(1, 2, 3, 4, 6)
)

还有代码:

library(tidyverse)
df_2 <- df_1 %>% 
    pivot_longer(cols = c(x, y), names_to = 'factor', values_to = 'values', 
                 values_drop_na = FALSE)

df_2

# A tibble: 10 x 2
   factor values
   <chr>   <dbl>
 1 x          NA
 2 y           1
 3 x           1
 4 y           2
 5 x           2
 6 y           3
 7 x          NA
 8 y           4
 9 x           6
10 y           6

问题:参数 values_fill 不起作用。

df_2 %>% 
  group_by(factor) %>% 
  mutate(n = row_number()) %>% 
  pivot_wider(names_from = factor, values_from = values, 
              values_fill = list(values = 0)) %>% 
  select(-1)

values_fill = list(values = 0)) 不要用 0 替换缺失值:

# A tibble: 5 x 2
      x     y
  <dbl> <dbl>
1    NA     1
2     1     2
3     2     3
4    NA     4
5     6     6

有什么问题?

最佳答案

values_fill 填充组合不存在的地方。在这里,NA 已经是数据集中的一个值。它原样保留或必须在 pivot_wider

之前替换它
df_2 %>% 
   group_by(factor) %>% 
   mutate(n = row_number()) 
# A tibble: 10 x 3
# Groups:   factor [2]
#   factor values     n
#   <chr>   <dbl> <int>
# 1 x          NA     1
# 2 y           1     1
# 3 x           1     2
# 4 y           2     2
# 5 x           2     3
# 6 y           3     3
# 7 x          NA     4
# 8 y           4     4
# 9 x           6     5
#10 y           6     5

即如果我们删除 NA 行,那么将缺少 values_fill 作用的组合

df_2 %>% 
   group_by(factor) %>% 
   mutate(n = row_number()) %>% 
   ungroup %>% 
   filter(!is.na(values)) %>% 
   pivot_wider(names_from = factor, values_from = values, 
               values_fill = list(values = 0))
# A tibble: 5 x 3
#      n     y     x
#  <int> <dbl> <dbl>
#1     1     1     0
#2     2     2     1
#3     3     3     2
#4     4     4     0
#5     5     6     6

关于r - tidyr::pivot_wider 中的 values_fill 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650001/

相关文章:

r - 根据R中的id组合行

r - Alpha 美学显示箭头的骨架而不是普通形状 - 如何防止它?

r - 根据条件创建序列计数器

r - 从大数据集中选择R中邮政编码边界的范围

r - 如何在 ggplot2 中绘制并排条形图?

r - 使用 dplyr 在新列中添加彩色点

R 使用值列表作为色标

r - 使用大字体时 ggplot2 方面标签的边距太大

r - 输出中带有 ftable 和引号的 Pander

r - 为什么摘要高估了 "no-intercept"模型公式的 R 平方