【发布时间】:2021-04-30 14:35:00
【问题描述】:
示例数据框:
df <- tibble(x = c('A', 'B', 'C'),
y = c('D', 'E', 'F'),
z = c(1, NA, 1))
我想使用 tidyr::fill 函数来替换向量 z 中的 NA 值。 我可以这样做:
df %>%
fill(z, .direction = 'down')
# A tibble: 3 x 3
x y z
<chr> <chr> <dbl>
1 A D 1
2 B E 1
3 C F 1
我现在想尝试的是在将 fill() 函数应用于向量 z 时创建一个新变量(这样我就可以将原始向量 z 保留为 NA)。 我试过这个:
df %>%
mutate(z2 = fill(z, .direction = 'down'))
但我只收到以下错误消息:
no applicable method for 'mutate_' applied to an object of class "c('double', 'numeric')"
为什么我不能在 mutate 函数中使用 tidyr::fill?到目前为止我所学到的(而且我对 R 比较陌生)是我可以使用 mutate 中的其他函数,例如 dplyr::recode、case_when、fct_reorder 等来更改现有向量,然后重新定位更改为新变量。
最终结果应该是这样的:
# A tibble: 3 x 4
x y z z2
<chr> <chr> <dbl> <dbl>
1 A D 1 1
2 B E NA 1
3 C F 1 1
【问题讨论】: