如何在R中分组处理重复数据并修改组内count字段值
解决方法
方法一:Base R(用ave()函数)
aggregate()更适合分组汇总,要保留原数据行并修改分组内的序号,用ave()更直接。代码如下:
# 构造原始数据 mydf <- data.frame( name = c("dave", "john", "steve", "dave", "harry", "harry", "will"), id = c(128, 123, 111, 128, 130, 130, 11), count = rep(1, 7) ) # 按name和id分组,给每组内的行分配连续序号 mydf$count <- ave(mydf$count, mydf$name, mydf$id, FUN = seq_along) # 查看结果 mydf
运行后会直接生成你需要的mydf_final效果,ave()会对name+id的每个分组应用seq_along函数,生成从1开始的连续序号,替换原有的count值。
方法二:tidyverse(dplyr)
如果习惯tidyverse语法,也可以用以下方式实现:
library(dplyr) mydf_final <- mydf %>% group_by(name, id) %>% mutate(count = row_number()) %>% ungroup()
row_number()会在每个分组内生成行号,和seq_along的效果完全一致。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

