首页 > 解决方案 > 如何在 R 中使用 pivot_wider 填充 NA 值

问题描述

这是我的数据框:

df <- tibble(x = c('a','a','a','a','a','b','b','b'), y = 1:8)

我想要这个最终输出:

df_final <- tibble(x = c('a','a','a','a','a'), y = 1:5, x_1 = c('b','b','b',NA,NA), y_1 = c(6,7,8,NA,NA))

我怎样才能使用pivot_wider函数来做到这一点?

标签: rdplyrtidyr

解决方案


你所要求的不是一个旋转,试试这个。

library(dplyr)
library(purrr) # map_dfc
df %>%
  split(., .$x) %>%
  map_dfc(~ lapply(., `length<-`, max(table(df$x))))
# Warning: Outer names are only allowed for unnamed scalar atomic inputs
# New names:
# * x -> x...1
# * y -> y...2
# * x -> x...3
# * y -> y...4
# # A tibble: 5 x 4
#   x...1 y...2 x...3 y...4
#   <chr> <int> <chr> <int>
# 1 a         1 b         6
# 2 a         2 b         7
# 3 a         3 b         8
# 4 a         4 <NA>     NA
# 5 a         5 <NA>     NA

推荐阅读