gpt4 book ai didi

r - 用 table() 计数并排除 0

转载 作者:行者123 更新时间:2023-12-04 10:43:10 25 4
gpt4 key购买 nike

我试着数三胞胎;为此,我使用了三个封装在数据框中的向量:

X=c(4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3)              
Y=c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,4,2,2,2,2,3,4,1,1,2,2,3,3,4,4)
Z=c(4,4,5,4,4,4,4,4,6,1,1,1,1,1,1,1,2,2,2,2,7,2,3,3,3,3,3,3,3,3)


Count_Frame=data.frame(matrix(NA, nrow=(length(X)), ncol=3))

Count_Frame[1]=X
Count_Frame[2]=Y
Count_Frame[3]=Z

Counts=data.frame(table(Count_Frame))

存在以下问题:如果我增加向量中的值范围或使用更多向量,则“计数”数据帧会由于许多 0 计数而迅速接近其大小限制。有没有办法在生成“计数”时排除 0 计数?

最佳答案

我们可以使用data.table。将 'data.frame' 转换为 'data.table' (setDT(Count_Frame)),按所有列分组 (.(X, Y, Z)),我们得到数字或行数(.N)。

library(data.table)
setDT(Count_Frame)[,.N ,.(X, Y, Z)]
# X Y Z N
# 1: 4 1 4 7
# 2: 4 1 5 1
# 3: 1 1 6 1
# 4: 1 1 1 3
# 5: 1 2 1 2
# 6: 1 3 1 1
# 7: 1 4 1 1
# 8: 2 2 2 4
# 9: 2 3 7 1
#10: 2 4 2 1
#11: 3 1 3 2
#12: 3 2 3 2
#13: 3 3 3 2
#14: 3 4 3 2

除了命名所有列,我们也可以使用 names(Count_Frame)(如果有很多列)

setDT(Count_Frame)[,.N , names(Count_Frame)]

关于r - 用 table() 计数并排除 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37679648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com