我想生成一列特定变量的计数。最简单的方法似乎是使用 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
有谁知道原因?