繁体   English   中英

确定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个观察结果为“是”。

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

我试图在plyr中使用count如下:

> count(dataframe[,-1])

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

你可以使用interactionpaste( ..., sep="_")来组合,但是你需要对它们做一些事情。 split它们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)) )    

你在这里寻找interaction

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

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

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

我将使用dplyrgroup_by()函数按Var1, Var2, ..., Var6对数据进行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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM