R语言使用mutate修改列时如何统计修改行数并标记受影响行
解决方案
实现思路
你当前直接统计匹配条件行数的思路本身效率就很高,没有额外的专门函数做这个需求。更推荐的写法是把标记修改行、修改目标列、统计修改数三个需求合并到同一段逻辑里,避免重复写判断条件减少出错概率。
具体实现
1. 同时标记修改行+统计修改数
library(dplyr) new_data <- my_data %>% # 新增标记列:TRUE代表本次被修改的行,FALSE代表未修改 mutate(is_modified = col2 == 0 & col3 != 0, # 基于标记列执行原有的col1修改逻辑 col1 = ifelse(is_modified, 0, col1)) # 直接对标记列求和得到被修改的总行数 modified_total <- sum(new_data$is_modified, na.rm = TRUE)
补充说明:加
na.rm = TRUE是为了避免数据中存在NA值时求和结果返回NA,如果你的数据没有NA可以省略该参数。
2. 不需要保留标记列,仅统计修改行数的简化写法
modified_total <- my_data %>% summarise(cnt = sum(col2 == 0 & col3 != 0, na.rm = TRUE)) %>% pull(cnt)
内容的提问来源于stack exchange,提问作者louis colson
相关产品推荐
相关产品推荐

