gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:41:27 27 4
gpt4 key购买 nike

我有这个数据:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com