一尘不染

计算R中的现有排列

algorithm

我有一个包含IDNum,Var1,Var2,Var3,Var4,Var5,Var6列的大型数据集。变量是布尔值,值为0或1。每行可以是64个可能的排列之一。我想计算与每个排列相对应的行数。有没有一种有效的方法可以在R中编写此代码?


阅读 205

收藏
2020-07-28

共1个答案

一尘不染

aggregate可以做到这一点。这是一个简短的示例:

r <- function() rbinom(10, 1, .5)
d <- data.frame(IDNum=1:10, Var1=r(), Var2=r())
d
   IDNum Var1 Var2
1      1    0    1
2      2    0    1
3      3    0    0
4      4    1    0
5      5    1    1
6      6    0    0
7      7    1    1
8      8    1    0
9      9    0    1
10    10    0    1

现在计算每个组合的数量:

> aggregate(d$IDNum, d[-1], FUN=length)
  Var1 Var2 x
1    0    0 2
2    1    0 2
3    0    1 4
4    1    1 2

中的值d$IDNum实际上并未在此处使用,但必须将某些内容传递给该length函数。d$IDNum传递每个组合中的值length以获取计数。

2020-07-28