您如何使用 R 为 mtcars 数据找到所有可能的变量与不同级别(具有 3 个示例场景)的成对比较?

How do you find all possible unique pairwise comparisons of variables with various levels (with 3 example scenarios) using R for the mtcars data?

您如何使用 R 对 mtcars 数据找到所有可能的变量与不同级别(具有 3 个示例场景)的成对比较?有没有办法在不同的场景下使用 r 代码来做到这一点?

以下是我感兴趣的示例:

示例 1: 我有 1 个因子变量(即“cyl”)和 3 个级别(即“4”、“6”和“8”),位于数据框的 1 列中。主题只能是一个变量的一个级别,并且所有主题都有一些与给定行 1 列中的变量相关联的值。有没有办法使用 R 代码找到这个 1 变量与 3 个级别的所有唯一 2 度成对比较(例如,mtcars$cyl == 4 和 mtcars$cyl == 5,mtcars$cyl == 4 和mtcars$cyl == 6, 等等...)?

示例 2: 我有 1 个因子变量(即“cyl”)和 3 个水平(即“4”、“6”和“8”)和另一个因子变量(即“引擎”)和 2 个水平(即“0 = V 形”,“1 = 直”)。主题只能是每个变量的一个级别,并且所有主题都具有与 2 列的给定行中的 2 个变量相关联的值。有没有办法找出 2 个变量的所有唯一 2 度成对比较(例如,mtcars$cyl == 4 和 mtcars$Engine == 0,mtcars$cyl == 6 和 mtcars$Engine == 1等...) 使用 R 代码?

示例 3: 我有 1 个因子变量(即“cyl”)和 3 个水平(即“4”、“6”和“8”),另一个因子变量(即“引擎”)有 2 个水平(即“0 = V 形”,“1 = 直线”),以及具有 2 个级别(即“0 = 自动”,“1 = 手动”)的第三个因子变量(即 am)。主题只能是每个变量的一个级别,并且所有主题都具有与 3 列给定行中的 3 个变量相关联的值。有没有办法找出 3 个变量的所有唯一 3 度成对比较(例如,mtcars$cyl == 4 和 mtcars$Engine == 0 和 mtcars$am = 0,mtcars$cyl == 6 和mtcars$Engine == 1 和 mtcars$am = 1,等等……)使用 R 代码?

提前致谢。

不确定您最终想要实现什么,但是对于您的第一个示例,您可以使用 combn,对于示例 2 和 3,您可以使用 expand.grid 来获取唯一的数据框一个或多个因素的水平组合:

# Example 1
as.data.frame(t(combn(unique(mtcars$cyl), 2)))
#>   V1 V2
#> 1  6  4
#> 2  6  8
#> 3  4  8
# Example 2
expand.grid(cyl = unique(mtcars$cyl), vs = unique(mtcars$vs))
#>   cyl vs
#> 1   6  0
#> 2   4  0
#> 3   8  0
#> 4   6  1
#> 5   4  1
#> 6   8  1
# Example 3
expand.grid(cyl = unique(mtcars$cyl), vs = unique(mtcars$vs), am = unique(mtcars$am))
#>    cyl vs am
#> 1    6  0  1
#> 2    4  0  1
#> 3    8  0  1
#> 4    6  1  1
#> 5    4  1  1
#> 6    8  1  1
#> 7    6  0  0
#> 8    4  0  0
#> 9    8  0  0
#> 10   6  1  0
#> 11   4  1  0
#> 12   8  1  0

您还可以使用 tidyr 包中的交叉函数:

    library(tidyr)
    crossing(mtcars$cyl, mtcars$vs, mtcars$am)