我有组数据,需要枚举每组中有多少成员作为现有数据框中的新变量,以便随后对数据进行子设置以供进一步分析。我已经在枚举组中的每个独特案例中得到了:
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)
但是,我认为接下来会调用某种形式的by
,aggregate
,unique
,dplyr
的{{1}}或其他解决方案,但是这些都没有成功。我尝试了一些,并查看了许多帖子,这些帖子没有完全解决问题或解决方案不足。其他海报经常想要将成员数量提取为表格或向量(使用count
轻松完成),但我需要组成员编号与原始数据保持关联以达到所需结果。下一步在我的具体问题中,根据每个组中的成员数量进行子集化。最终结果将理想地创建以下数据:
table
由于
答案 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