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