如何在R的data.table面板数据中新增ID对应总观测数变量
问题解答
完全可以使用data.table实现该需求,利用其原生的分组赋值语法即可高效完成需求。
实现代码
library(data.table) # 示例数据集 data <- data.table(ID = c(1,1,1,1,1,2,2,2,2), crop = c(1,2,3,4,5,1,2,3,4)) # 按ID分组生成总观测数变量 data[, total := .N, by = ID]
语法说明
.N是data.table内置的分组统计符号,返回当前分组的观测总条数by = ID指定统计维度为ID列,所有相同ID的行会被归为同一组计算:=是原地赋值运算符,直接在原数据集上新增列,无需额外赋值给新对象,内存占用极低,适合处理大规模面板数据
运行结果
> data ID crop total 1: 1 1 5 2: 1 2 5 3: 1 3 5 4: 1 4 5 5: 1 5 5 6: 2 1 4 7: 2 2 4 8: 2 3 4 9: 2 4 4
内容的提问来源于stack exchange,提问作者codemachino
相关产品推荐
相关产品推荐

