我有一個包含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