识别 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))
您可以使用 interaction
或 paste( ..., 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())
我有一个包含 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))
您可以使用 interaction
或 paste( ..., 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())