识别 R 中六个变量的所有组合

Identify all combinations of six variables in R

我有一个包含 6 个变量和 250 个观察值的数据框,如下所示:

   id    Var1    Var2    Var3    Var4    Var5    Var6 **

   1     yes     yes     yes     no      yes     yes
   2     no      no      yes     yes     no      yes
   ...
   250   no      yes     yes     yes     yes     yes

我想识别数据中存在的所有变量组合。例如,我知道每个变量有 20 个 "yes" 的观察值。

我正在进行同行分组分析,并希望根据这些 yes/no 变量对观察结果进行分组。每个变量具有 "yes" 的 20 个观察值将是组#1,其他 20 个观察值具有 Var1=yes 和 Var2:Var6=no 将是组#2,等等...

我尝试在 plyr 中使用计数如下:

> count(dataframe[,-1])

这没有用。任何建议都会很棒!

您正在这里寻找interaction

with (yourdata, interaction (Var1, Var2, Var3, Var4,Var5, Var6 ))

或者, 正如@thelatemail 所建议的:

do.call(interaction,c(yourdata[-1],drop=TRUE))

您可以使用 interactionpaste( ..., sep="_") 进行组合,但您需要对它们进行一些处理。 split 将它们分为单独的类别(这将保留身份)或用 table(或两者)将它们制成表格。

 int_grps <- split( dataframe[,1], interaction( dataframe[,-1], drop=TRUE) )

 int_counts <- table( interaction( dataframe[,-1], drop=TRUE ) )

如果您只想枚举存在的组合,代码可以是:

names(table(interaction( dataframe[,-1], drop=TRUE)) )    

我会使用 dplyr 中的 group_by() 函数按 Var1, Var2, ..., Var6 对数据进行分组。然后,您可以使用 summarise() 来计算每个组合出现的次数。

library(dplyr)

df <- read.table(text = 
"id    Var1    Var2    Var3    Var4    Var5    Var6
   1     yes     yes     yes     no      yes     yes
   2     no      no      yes     yes     no      yes
   3     no      no      yes     yes     no      yes
   250   no      yes     yes     yes     yes     yes
", header = TRUE, stringsAsFactors = FALSE)

df %>%
  group_by(Var1, Var2, Var3, Var4, Var5, Var6) %>%
  summarise(n_occur = n())