在数据集(N = 6000)中,我想分析(15个虚拟)变量组合的出现频率。
ID Var1 Var2 Var3 Var15
1 1 0 0 1
2 0 1 1 1
3 1 0 0 0
6000 1 0 0 0
对于这个例子,我希望看到组合1000出现两次,1001出现一次,0111也出现一次。
我能想到的唯一方法就是为每种可能的组合计算一个变量......
有一种优雅而有效的方法吗?
我已经通读了 How to summarize all possible combinations of variables?但这是一个稍微不同的问题,Aggregating Tally counters超越了我的知识(但如果这是我的问题的答案,我将通过它)。
答案 0 :(得分:2)
您可以像这样使用count
:
df = read.table(text = "
ID Var1 Var2 Var3 Var15
1 1 0 0 1
2 0 1 1 1
3 1 0 0 0
6000 1 0 0 0
", header=T)
library(dplyr)
df %>% count(Var1, Var2, Var3, Var15)
# # A tibble: 3 x 5
# Var1 Var2 Var3 Var15 n
# <int> <int> <int> <int> <int>
# 1 0 1 1 1 1
# 2 1 0 0 0 2
# 3 1 0 0 1 1
如果您不想输入(多个)列名,请使用count_
:
input_names = names(df)[-1] # select all column names apart from 1st one
df %>% count_(input_names)
# # A tibble: 3 x 5
# Var1 Var2 Var3 Var15 n
# <int> <int> <int> <int> <int>
# 1 0 1 1 1 1
# 2 1 0 0 0 2
# 3 1 0 0 1 1
如果要对变量进行分组并创建单个(组合)变量,可以执行以下操作:
library(dplyr)
library(tidyr)
input_names = names(df)[-1]
df %>% count_(input_names) %>% unite_("ComboVar",input_names,sep="")
# # A tibble: 3 x 2
# ComboVar n
# * <chr> <int>
# 1 0111 1
# 2 1000 2
# 3 1001 1
答案 1 :(得分:1)
使用SpreadsheetApp.getActiveSheet().getRange("A1").getDisplayValue();
包,您可以:
dplyr
答案 2 :(得分:1)
SPSS解决方案也只是汇总。 以下语法将计数放入新数据集中:
DATASET DECLARE comb.
AGGREGATE /OUTFILE='comb' /BREAK=var1 to var15 /Noccurences=N.
您还可以将计数添加到当前数据集中,如下所示:
AGGREGATE /OUTFILE=* MODE=ADDVARIABLES /BREAK=var1 var2 var3 /Noccurences=N.
答案 3 :(得分:1)
基础R解决方案是使用[1, 'Michael', 'Emily], [2,'Mathew','Jessica'], [3, 'Jacob', 'Ashley ']
。使用AntoniosK的示例df:
table
与其他示例不同,这可以为您提供零频率。如果您不想要那些零频率示例,那么您可以简单地执行:
df = read.table(text = "
ID Var1 Var2 Var3 Var15
1 1 0 0 1
2 0 1 1 1
3 1 0 0 0
6000 1 0 0 0
", header=T)
res <- as.data.frame(table(df[,2:5]))
#> res
# Var1 Var2 Var3 Var15 Freq
#1 0 0 0 0 0
#2 1 0 0 0 2
#3 0 1 0 0 0
#4 1 1 0 0 0
#5 0 0 1 0 0
#6 1 0 1 0 0
#7 0 1 1 0 0
#8 1 1 1 0 0
#9 0 0 0 1 0
#10 1 0 0 1 1
#11 0 1 0 1 0
#12 1 1 0 1 0
#13 0 0 1 1 0
#14 1 0 1 1 0
#15 0 1 1 1 1
#16 1 1 1 1 0
答案 4 :(得分:0)
plyr
选项:
plyr::count(df[-1])
# Var1 Var2 Var3 Var15 freq
#1 0 1 1 1 1
#2 1 0 0 0 2
#3 1 0 0 1 1