我有一个包含IDNum,Var1,Var2,Var3,Var4,Var5,Var6列的大型数据集。变量是布尔值,其值为0或1.每行可以是64种不同的可能排列之一。我想计算每个排列对应的行数。有没有一种有效的方式来写在R?计算R中的现有排列
1
A
回答
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
以获得计数。
+0
两个很好的解决方案,谢谢!我将与#1一起进行,因为它完全符合我希望的,非常简单/紧凑,并且使用了聚合,我需要将其添加到我的词汇表中。第二个也是一个很好的学习opp。 – marcel
1
这会给出稍微不同的结果,并列出所有可能性,无论它们是否存在。示例数据:
nam <- c("IDNum",paste0("Var",1:6))
n <- 5
set.seed(23)
dat <- setNames(data.frame(1:n,replicate(6,sample(0:1,n,replace=TRUE))),nam)
# IDNum Var1 Var2 Var3 Var4 Var5 Var6
#1 1 1 0 1 0 1 1
#2 2 0 1 1 1 0 1
#3 3 0 1 0 1 0 1
#4 4 1 1 0 1 1 0
#5 5 1 1 1 1 0 1
计数举起手来:
data.frame(table(dat[-1]))
# Var1 Var2 Var3 Var4 Var5 Var6 Freq
#1 0 0 0 0 0 0 0
#...
#28 1 1 0 1 1 0 1
#...
#43 0 1 0 1 0 1 1
#...
#47 0 1 1 1 0 1 1
#48 1 1 1 1 0 1 1
#...
#54 1 0 1 0 1 1 1
#...
#64 1 1 1 1 1 1 0
相关问题
- 1. R中的计算列
- 2. R:如何计算计算字段列中的值R
- 3. 现有表中的派生/计算列
- 4. R:列间计算
- 5. 出现的计算中的R
- 6. 实现算法来计算R中的R
- 7. 在F中计算排列#
- 8. 如何计算R中的组合和排列?
- 9. 计算行总数但排除R中的列
- 10. 计算中的R
- 11. 计算中的R
- 12. 计算中的R
- 13. 计算中的R
- 14. 计算中的R
- 15. 计算一列中字符串出现的次数R
- 16. R:计算数据框中每列的字符串出现
- 17. Prolog的计算排列
- 18. 计算列总数,然后R中对结果排序
- 19. 计算由组中的一个R列
- 20. R - 计算总结列
- 21. R:所有排列
- 22. 如何用R计算组标签的排列?
- 23. 计算排列环中的球体
- 24. 计算排列中“倒位”的数量
- 25. GMTOFF计算r中
- 26. 计算字r中
- 27. 计算和R中
- 28. 仅计算R中
- 29. 计算R中具有非数值的列的平均值
- 30. 的所有排列+ -R,+ -s
它不是置换,它的变化。请参阅[本图表](http://users.telenet.be/vdmoortel/dirk/Maths/PermVarComb.html)。用这个比喻:“你可以用2位数字0,1来做6个数字的数字吗?” – Kicsi