【发布时间】:2015-10-02 17:24:37
【问题描述】:
下面是我的data.frame,我想知道每个内存类别(1 到 8)的模式是什么
> dput(d)
structure(list(MEMORY1 = c(5.5, 7, 1.5, 6, 4.5, 4.5, 5, 4, 1,
5.5, 2.5, 4.5, 2.5, 5.5, 4, 1, 4, 5, 2.5, 5.5), MEMORY2 = c(5.5,
3, 1.5, 6, 4.5, 4.5, 5, 4, 5, 5.5, 6.5, 4.5, 2.5, 5.5, 4, 7,
8, 5, 6.5, 5.5), MEMORY3 = c(5.5, 3, 4.5, 2, 4.5, 4.5, 5, 4,
5, 1.5, 6.5, 4.5, 6.5, 5.5, 4, 7, 4, 5, 6.5, 5.5), MEMORY4 = c(1.5,
3, 4.5, 2, 1, 4.5, 5, 4, 5, 5.5, 2.5, 4.5, 2.5, 1.5, 4, 2, 4,
5, 2.5, 1.5), MEMORY5 = c(5.5, 3, 4.5, 6, 4.5, 4.5, 5, 1, 5,
5.5, 6.5, 4.5, 6.5, 5.5, 4, 4, 4, 5, 2.5, 1.5), MEMORY6 = c(5.5,
7, 7.5, 6, 8, 4.5, 5, 7.5, 5, 5.5, 6.5, 4.5, 6.5, 5.5, 4, 4,
4, 5, 2.5, 5.5), MEMORY7 = c(1.5, 3, 4.5, 2, 4.5, 4.5, 1, 4,
5, 1.5, 2.5, 4.5, 6.5, 1.5, 4, 7, 4, 1, 6.5, 5.5), MEMORY8 = c(5.5,
7, 7.5, 6, 4.5, 4.5, 5, 7.5, 5, 5.5, 2.5, 4.5, 2.5, 5.5, 8, 4,
4, 5, 6.5, 5.5)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3",
"MEMORY4", "MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(492L,
509L, 510L, 518L, 519L, 522L, 527L, 533L, 535L, 542L, 543L, 557L,
558L, 560L, 567L, 569L, 578L, 581L, 582L, 584L), class = "data.frame")
请忽略第一个未命名的列,因为它与此处无关。
> d
MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
492 5.5 5.5 5.5 1.5 5.5 5.5 1.5 5.5
509 7.0 3.0 3.0 3.0 3.0 7.0 3.0 7.0
510 1.5 1.5 4.5 4.5 4.5 7.5 4.5 7.5
518 6.0 6.0 2.0 2.0 6.0 6.0 2.0 6.0
519 4.5 4.5 4.5 1.0 4.5 8.0 4.5 4.5
522 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5
527 5.0 5.0 5.0 5.0 5.0 5.0 1.0 5.0
533 4.0 4.0 4.0 4.0 1.0 7.5 4.0 7.5
535 1.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0
542 5.5 5.5 1.5 5.5 5.5 5.5 1.5 5.5
543 2.5 6.5 6.5 2.5 6.5 6.5 2.5 2.5
557 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5
558 2.5 2.5 6.5 2.5 6.5 6.5 6.5 2.5
560 5.5 5.5 5.5 1.5 5.5 5.5 1.5 5.5
567 4.0 4.0 4.0 4.0 4.0 4.0 4.0 8.0
569 1.0 7.0 7.0 2.0 4.0 4.0 7.0 4.0
578 4.0 8.0 4.0 4.0 4.0 4.0 4.0 4.0
581 5.0 5.0 5.0 5.0 5.0 5.0 1.0 5.0
582 2.5 6.5 6.5 2.5 2.5 2.5 6.5 6.5
584 5.5 5.5 5.5 1.5 1.5 5.5 5.5 5.5
如果我将 MEMORY1 的值制成表格,我会得到以下信息:
> table(d$MEMORY1)
1 1.5 2.5 4 4.5 5 5.5 6 7
2 1 3 3 3 2 4 1 1
所以我可以看到这里的模式是 5.5,我尝试了as.numeric(names(table(d$MEMORY1))[which.max(table(d$MEMORY1))]),它确实返回了 5.5。这非常笨拙,我如何在我的data.frame 的所有 8 列中迭代它?我想要包含 8 种模式的结果向量(一个对应于每一列)。有什么优雅的方法可以做到这一点?
【问题讨论】:
标签: r