如何在R中按月份分组标记重复3次及以上的数值
R语言按月份分组标记重复3次及以上的数值
我们可以通过分组统计每个Value在对应Month中的出现次数,再判断次数是否≥3来生成目标列。以下是两种常用实现方式:
示例数据
data2 <- data.frame( Month = c("Jan", "Jan", "Jan", "Jan", "Feb", "Feb", "Feb", "Feb", "Feb"), Value = c(1, 2, 2, 2, 2, 2, 4, 4, 4) )
方法1:使用dplyr包
这是tidyverse生态下的常用方法,代码可读性强:
library(dplyr) data2 <- data2 %>% group_by(Month, Value) %>% # 按月份和数值组合分组 mutate(Repeating = n() >= 3) %>% # 直接判断分组内的行数是否≥3 ungroup() # 取消分组状态
方法2:使用data.table包
适合处理大规模数据集,运行效率更高:
library(data.table) setDT(data2) # 将普通数据框转换为data.table data2[, Repeating := .N >= 3, by = .(Month, Value)] # 分组生成标记列
执行任意一种方法后,data2都会生成符合要求的Repeating列,结果与你给出的示例一致。
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

