为数据集每行观测值添加对应宠物frequency列的技术需求
解决方案
针对你的需求,直接在原数据框中新增宠物出现频率列,这里提供两种常用的R语言实现方法:
方法一:使用dplyr(tidyverse生态)
通过分组后计算每组行数,直接在原数据上新增列,无需单独生成汇总表:
library(dplyr) # 假设你的数据框名为df df <- df %>% group_by(answer) %>% mutate(freq = n()) %>% ungroup()
group_by(answer):按宠物类型分组mutate(freq = n()):新增freq列,赋值为当前组的行数(即该宠物的总出现次数)ungroup():取消分组,避免后续操作受分组影响(可选,但推荐)
方法二:使用data.table(适合大数据集)
data.table的操作更高效,且支持直接在原数据对象上修改:
library(data.table) # 将数据框转换为data.table(若原本就是则跳过) setDT(df) # 新增freq列,按answer分组计算每组数量 df[, freq := .N, by = answer]
.N代表当前分组的行数,by = answer指定分组依据,直接在原data.table中新增列
执行后,原数据框会新增freq列,每行对应宠物的全局出现次数,比如cat和dog的行都会显示6,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Diogo Bichon
相关产品推荐
相关产品推荐

