在R中按条件新增列并统计元素跨组重复次数
解决方案
我来帮你搞定这个需求,用R的dplyr包就能轻松实现,步骤很清晰:
代码实现
如果还没安装dplyr包,先执行install.packages("dplyr")安装,之后运行以下代码:
library(dplyr) # 1. 统计每个Sequence对应的唯一Groups数量,同时按规则处理COL5 seq_group_stats <- test_df %>% group_by(COL4) %>% summarise(COL5 = n_distinct(Groups)) %>% mutate(COL5 = ifelse(COL5 > 1, COL5, 0)) # 2. 将统计结果合并回原数据框,得到最终结果 final_df <- test_df %>% left_join(seq_group_stats, by = "COL4")
代码解释
group_by(COL4):按Sequence分组,方便后续针对每个Sequence统计跨组情况n_distinct(Groups):精准计算每个Sequence在多少个不同Groups中出现,这正是你需要的次数ifelse(COL5 > 1, COL5, 0):把仅在单个Group出现的Sequence对应的COL5值设为0,完全匹配你的规则left_join(...):把统计好的COL5值匹配到原数据的每一行,确保每个对应Sequence的行都能得到正确结果
结果验证
运行后你会得到和目标完全一致的DataFrame:
- Sequence3在G1和G2出现,对应行的COL5为2
- Sequence16在G1、G2、G3出现,对应行的COL5为3
- 其他仅在单个Group出现的Sequence,COL5都为0
内容的提问来源于stack exchange,提问作者Grendel
相关产品推荐
相关产品推荐

