如何扩展透视数据框?

问题描述 投票:0回答:1

我想在旋转数据框后获得所有参数的组合。我有这样的数据框:

df <- data.frame(parameter = c(rep("X",5), rep("Y",3)), value=c(letters[1:5],1:3))

我做了以下改造:

df %>% 
  group_by(parameter) %>%
  mutate(row = row_number()) %>%
  pivot_wider(names_from = parameter, values_from = value) %>%
  select(-row)

我的输出是:

# A tibble: 5 x 2
  X     Y    
  <chr> <chr>
1 a     1    
2 b     2    
3 c     3    
4 d     NA   
5 e     NA   

我想要的输出:

# A tibble: 15 x 2
   X         Y
   <fct> <int>
 1 a         1
 2 b         1
 3 c         1
 4 d         1
 5 e         1
 6 a         2
 7 b         2
...
14 d         3
15 e         3
r pivot tidyverse expand
1个回答
1
投票

这是一个基于 expand.grid 函数的解决方案。

df %>% 
  group_by(parameter) %>%
  mutate(row = row_number()) %>%
  pivot_wider(names_from = parameter, values_from = value) %>%
  select(-row) %>%
  expand.grid() %>%
  filter(!is.na(Y))

这是一个相当肮脏的解决方法,我相信还有另一种更漂亮的方法。

© www.soinside.com 2019 - 2024. All rights reserved.