作为现有数据集中的新变量的组中的观察数

时间:2015-12-07 03:13:34

标签: r

我有组数据,需要枚举每组中有多少成员作为现有数据框中的新变量,以便随后对数据进行子设置以供进一步分析。我已经在枚举组中的每个独特案例中得到了:

set.seed(42)
id <- sample(c(1:4), 10, replace=T)
df <- data.frame(id)

df$test1 <- ave(df$id,df$id, FUN=seq_along)

但是,我认为接下来会调用某种形式的byaggregateuniquedplyr的{​​{1}}或其他解决方案,但是这些都没有成功。我尝试了一些,并查看了许多帖子,这些帖子没有完全解决问题或解决方案不足。其他海报经常想要将成员数量提取为表格或向量(使用count轻松完成),但我需要组成员编号与原始数据保持关联以达到所需结果。下一步在我的具体问题中,根据每个组中的成员数量进行子集化。最终结果将理想地创建以下数据:

table

由于

2 个答案:

答案 0 :(得分:1)

基础R

df$group_size <- ave(df$id,df$id, FUN=length)

使用dplyr

library(dplyr)
df %>% group_by(id) %>% mutate(group_size = n())

答案 1 :(得分:1)

data.table方式。

set.seed(42)
id <- sample(c(1:4), 10, replace=T)
df <- data.frame(id)

library(data.table)
dt <- data.table(df)
dt[, gs:=lapply(.SD, length), by="id"]
dt
#    id gs
# 1:  4  3
# 2:  4  3
# 3:  2  1
# 4:  4  3
# 5:  3  5
# 6:  3  5
# 7:  3  5
# 8:  1  1
# 9:  3  5
#10:  3  5