我想生成一列特定变量的计数。最简单的方法似乎是使用 table()。对于相当少量的数据,似乎没有问题。
A <- data.frame(A1 = sample(1:1000, 100000, replace = TRUE))
B <- data.frame(B1 = sample(1:1000, 100000, replace = TRUE))
C <- cbind(A, B)
C$countC <- table(as.factor(C$A1))[C$A1]
summary(C$countC)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 65      94     101     101     108     132 
但是,如果我从一个更大的集合中构建一个表(请注意,现在我从 1:10k,而不是 1:1k 采样),它会生成 NA,尽管我正在构建的数据中没有 NA表来自:
A <- data.frame(A1 = sample(1:10000, 100000, replace = TRUE))
B <- data.frame(B1 = sample(1:10000, 100000, replace = TRUE))
C <- cbind(A, B)
C$countC <- table(as.factor(C$A1))[C$A1]
summary(C$A1)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1    2512    5005    5008    7502   10000 
summary(C$countC)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
1.00    8.00   10.00   10.18   12.00   25.00       7 
如果数据不在数据框中,则不会发生此问题。
A <- sample(1:10000, 1000000, replace = TRUE)
summary(table(as.factor(A))[A])
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
57      94     101     101     108     144 
有谁知道原因?