R 找出数据框中唯一组合的数量以及每个组合中的观察值数量

R 找出数据框中唯一组合的数量以及每个组合中的观察值数量,r,combinations,R,Combinations,这个问题源于。如果我们有三列或更多列,而不是两列呢?考虑下面的数据。 x <- c(600, 600, 600, 600, 600, 600, 600, 600, 600, 800, 800, 800, 800, 800, 800, 800, 800, 800, 600, 600, 600, 600, 600, 600, 600, 600, 600, 800, 800, 800, 800, 800, 800, 800, 800, 800, 600, 600, 6

这个问题源于。如果我们有三列或更多列,而不是两列呢?考虑下面的数据。

x <- c(600, 600, 600, 600, 600, 600, 600, 600, 600, 800, 800, 800, 800, 800, 800, 800, 800, 800,
       600, 600, 600, 600, 600, 600, 600, 600, 600, 800, 800, 800, 800, 800, 800, 800, 800, 800,
       600, 600, 600, 600, 600, 600, 600, 600, 600, 800, 800, 800, 800, 800, 800, 800, 800, 800)

y <- c(1,  1,  1,  1,  1,  1,  1, 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
       80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
       3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3)

z <- c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3,
       1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3,
       1, 2, 3, 1, 2, 3)

xyz <- data.frame(cbind(x, y, z))

x使用
表格
表格
交互

tabulate(with(xyz, interaction(x,y,z)))

table(with(xyz, interaction(x,y,z)))
或通过交互拆分
并使用
长度

lengths(split(xyz, with(xyz, interaction(x,y,z))))


使用
data.table
的选项。我们将“data.frame”转换为“data.table”(
setDT(xyz)
,按“xyz”列分组,得到每组中的元素数(
.N

或者使用
dplyr
,我们按列分组,使用
summary
获得元素的数量(
n()

library(dplyr)
xyz %>%
    group_by_(.dots=names(xyz)) %>%
    summarise(n=n()) %>%
    .$n
#[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

你可以试试
unique(xyz)
@HubertL当然。这会给出唯一的组合。但我还想知道在每个唯一的组合中有多少个观测值。请问有没有一种简单的方法?长度
是什么包的一部分?
library(data.table)
setDT(xyz)[, .N, names(xyz)]$N
#[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
library(dplyr)
xyz %>%
    group_by_(.dots=names(xyz)) %>%
    summarise(n=n()) %>%
    .$n
#[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3