我想在旋转数据框后获得所有参数的组合。我有这样的数据框:
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
这是一个基于 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))
这是一个相当肮脏的解决方法,我相信还有另一种更漂亮的方法。