[英]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])
这没用。 任何建议都会很棒!
你可以使用interaction
或paste( ..., 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))
我将使用dplyr
的group_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.