在R语言数据框中保留每组首个月份数值,其余设为0
解决方案
这里提供两种实用的R语言实现方法,满足你按分组保留首个月份数值、其余置0的需求:
方法一:Base R 原生实现
无需额外加载包,使用ave()函数按分组处理:
df$values <- ave(df$values, df$group, FUN = function(x) { x[-1] <- 0 # 将每组除第一个元素外的所有值设为0 x })
方法二:dplyr 包实现
适合习惯 tidyverse 风格的用户,需先加载dplyr包:
library(dplyr) df <- df %>% group_by(group) %>% mutate(values = ifelse(row_number() == 1, values, 0)) %>% # 仅保留每组第一行的values ungroup() # 取消分组状态
处理后结果
执行上述任意一种方法后,数据框会变为:
group month values 1 G1 March 98.97291 2 G1 April 0.00000 3 G2 January 97.46496 4 G2 February 0.00000 5 G2 March 0.00000 6 G2 April 0.00000 7 G2 November 0.00000 8 G2 December 0.00000
内容的提问来源于stack exchange,提问作者Farhan
相关产品推荐
相关产品推荐

