r - 如何计算大型数据集中出现的次数

标签 r count sample replicate

我正在尝试计算 25 年来数据框中每个“场景”(0 到 9)的出现次数。 基本上,我对名为 0 到 9 的场景进行了 10000 次模拟,每个场景都有一个发生的概率。

我的数据框太大,无法粘贴到此处,但这是预览:

simulation=as.data.frame(replicate(10000,sample(c(0:9),size=25,replace=TRUE,prob=prob)))

simulation2=transpose(simulation)

注意** prob 是一个向量,具有观察每个场景的概率

   v1 v2 v3 v4 v5 v6 ... v25
1   0  0  4  0  2  0      9
2   1  0  0  2  3  0      6
3   0  4  6  2  0  0      0
4
...
10000

这是我迄今为止尝试过的:

for (i in c(1:25)){
  for (j in c(0:9)){
f=sum(simulation2[,i]==j);
vect_f=c(vect_f,f)
  }
  vect_f=as.data.frame(vect_f)
}

如果我省略“for (i in c(1:25))”,这将返回所需输出的右侧第一列。现在我正试图在 25 年内复制这一点。当我输入第二个“for”时,我没有得到所需的输出。

输出应如下所示:

      (Year) 1  2  3  4  5  6   ... 25
(Scenario)
   0         649
   1         239
   ...
   9          11

649 是第一年在我的 10 000 次模拟中观察到“场景 0”的次数。

感谢您的帮助

最佳答案

我们可以使用表格

sapply(simulation2, table)

#    V1   V2   V3   V4   V5 .....
#0 1023 1050  994 1016 1022 .....
#1 1050  968  950 1001  981 .....
#2  997  969 1004  999  949 .....
#3 1031  977 1001  993 1009 .....
#4 1017 1054 1020 1003  985 .....
#......

如果列中缺少某些值,我们可以将数字转换为包括所有级别的因子

sapply(simulation2, function(x) table(factor(x, levels = 0:9)))

关于r - 如何计算大型数据集中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56784024/

相关文章:

Python:打印用户输入的常见字母

java - 计算 n 个 boolean 值的 "trues"的数量

XSLT 计数具有给定值的元素

python - 如何在 Python 中从总体中生成随机样本?

c# - 以编程方式从 XML 模式生成测试 XML

r - 插入符号中的 AUPRC 和 PRROC 之间的区别

r - 在 Rnotebook 中为 SQL block 设置全局数据库连接

r - 如何在不循环的情况下添加组 ID?

r - 如何在数据框中每 3 个现有行插入空白行?

r - 如何在样本大小不等的 R 中进行单向方差分析?