r - 在R中组合所有可能的数据框行
问题描述
我有以下数据框:
x <- data.frame("Col1" = c('A', 'B', 'C', 'D'), "Col2" = c('W', 'X', 'Y', 'Z'))
我想要一个新的数据框,其中包含所有可能的行组合组合,这将提供一个数据框,该数据框有两列,其中包含以下内容:
A W
A X
A Y
A Z
B W
B X
B Y
B Z
C W
...
数据框总是有两列,但行数可能会有所不同。
我查看了 permute() 或 sample() 但我没有设法得到我想要的东西。谢谢!
解决方案
tidyr::complete()
是为此而设计的。我很惊讶我没有在 SO 上看到一个普通的例子。
library(magrittr)
x %>%
tidyr::complete(Col1, Col2)
结果:
# A tibble: 16 x 2
Col1 Col2
<fct> <fct>
1 A W
2 A X
3 A Y
4 A Z
5 B W
6 B X
7 B Y
8 B Z
9 C W
10 C X
11 C Y
12 C Z
13 D W
14 D X
15 D Y
16 D Z
如果您的真实场景与 OP 一样简单,@bouncyball 的建议expand.grid(x)
是最干净的。如果您的现实世界场景更复杂,那么tidyr::complete()
可能会让您更轻松地成长。我通常有两个以上的 ID 变量来扩展/完成。这些通常是分析的因变量/结果变量,并且该fill
参数允许您为未出现在观察数据集中的组合指定它们的默认值。这是一个SO 示例。
编辑以反映@bouncyball 和@ADuv 的建议。
推荐阅读
- datatable - 在powerapps中对同一列使用具有多个值的过滤器函数
- c# - C#如何递归搜索类型为x的对象
- python - 用二叉搜索树求解 S 表达式
- python - Python 3D Dataframe:按列对值进行排序并获得平均值
- javascript - 如何将用于身份验证的中间件功能从主服务器模块传递到路由器文件
- angular - 错误找不到“对象”类型的不同支持对象“[对象对象]”
- python - Custom Vision 在哪里存储训练图像
- react-native - 从终端运行时反应本机应用程序无法在 Safari 中调试
- python - 使用 pip 安装库时出现此错误的原因
- php - Apple OSX Catalina 上不同位置的 php.ini-default