如何在R语言的comb_df中新增newcat类别并按日期求和value
解决方案
方法一:使用dplyr包(简洁直观)
先确保安装并加载dplyr包,再通过分组求和构造新类别数据,最后合并到原数据框:
# 若未安装dplyr先执行此句:install.packages("dplyr") library(dplyr) # 生成newcat类别的数据框 newcat_df <- comb_df %>% group_by(Date) %>% summarise(value = sum(value), .groups = "drop") %>% # 按日期求和 mutate(Category = "newcat") %>% # 设置新类别 select(Category, Date, value) # 匹配原数据框的列顺序 # 合并得到最终结果 final_df <- rbind(comb_df, newcat_df) # 查看结果 print(final_df)
运行后final_df即为包含New、Old、newcat三类的目标数据框,每个日期的newcat值对应同日期New和Old的value之和。
方法二:Base R实现(无需额外包)
如果不想加载第三方包,用基础R函数也能完成:
# 按日期分组计算value总和 sum_vals <- tapply(comb_df$value, comb_df$Date, sum) # 构造newcat数据框 newcat_df <- data.frame( Category = rep("newcat", length(sum_vals)), Date = names(sum_vals), value = as.vector(sum_vals), check.names = FALSE ) # 合并得到最终结果 final_df <- rbind(comb_df, newcat_df) # 查看结果 print(final_df)
两种方法得到的结果一致,最终输出的final_df结构如下:
Category Date value 1 New Jan 2014 4 2 New Feb 2014 7 3 New Mar 2014 6 4 Old Jan 2014 1 5 Old Feb 2014 2 6 Old Mar 2014 4 7 newcat Jan 2014 5 8 newcat Feb 2014 9 9 newcat Mar 2014 10
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

