在R中基于两列重复值创建含计数列的新数据框
解决R数据框按Date-Name分组统计重复次数并生成新列的问题
示例数据构造
首先还原你提供的示例数据框DF1:
DF1 <- data.frame( Date = c("2022-03-13", "2022-03-13", "2022-03-13", "2022-03-14", "2022-03-13", "2022-03-14"), Name = c("Bob", "Bob", "Tim", "Bob", "Tim", "Jim") )
方法一:Base R 实现
无需额外安装包,用基础R函数完成:
# 按Date和Name分组统计重复次数 count_stats <- aggregate(. ~ Date + Name, data = DF1, FUN = length) # 重命名统计列 colnames(count_stats)[3] <- "count_num" # 生成指定格式的Count列 count_stats$Count <- paste("Count", count_stats$count_num) # 筛选需要的列得到DF2 DF2 <- count_stats[, c("Date", "Name", "Count")]
方法二:dplyr(tidyverse)实现
如果习惯tidyverse风格,用dplyr更简洁:
# 未安装dplyr先运行:install.packages("dplyr") library(dplyr) DF2 <- DF1 %>% group_by(Date, Name) %>% summarise(count_num = n(), .groups = "drop") %>% # 统计每组数量并取消分组 mutate(Count = paste("Count", count_num)) %>% # 生成指定格式列 select(Date, Name, Count) # 保留目标列
最终结果DF2
| Date | Name | Count |
|---|---|---|
| 2022-03-13 | Bob | Count 2 |
| 2022-03-13 | Tim | Count 2 |
| 2022-03-14 | Bob | Count 1 |
| 2022-03-14 | Jim | Count 1 |
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

