在 R 中,如何为其他列的每个独特组合创建一个长频率表

问题描述 投票:0回答:1

这是我桌子的前几行...

enter image description here

在R中,如何创建一个长表,其中Col A和Col B显示所有可能的组合,Col C包含a或b(或c或d或其值可能是什么),Col D显示Col的频率Col A 和 B 的每种组合的 C 值。

使用上面的示例,结果应如下所示(仅显示前几行)...

enter image description here

我尝试了melt()和table()的组合,但收效甚微。

r melt
1个回答
0
投票
as.data.frame.table(xtabs(~ ColA + ColB + ColC, dat))
#   ColA ColB ColC Freq
# 1    1    1    a    2
# 2    2    1    a    0
# 3    1    2    a    1
# 4    2    2    a    0
# 5    1    1    b    1
# 6    2    1    b    2
# 7    1    2    b    1
# 8    2    2    b    1

数据

dat <- structure(list(ColA = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L), ColB = c(1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L), ColC = c("a", "a", "b", "b", "a", "b", "b", "b")), class = "data.frame", row.names = c(NA, -8L))
© www.soinside.com 2019 - 2024. All rights reserved.