R语言中根据特定字符串计数结果创建新列的实现方法
R数据框按行统计已完成任务数的实现方法
你可以直接用以下两种方案实现需求,均基于mutate()函数完成:
方案1:tidyverse按行运算写法(可读性高)
这一写法逻辑直观,符合dplyr的常用语法习惯:
library(dplyr) # 新增完成任务数列 df <- df %>% # 按行分组,后续运算对每行单独生效 rowwise() %>% mutate( # 排除id列后,统计当前行等于completed的字段数量 completed_count = sum(c_across(-id_number) == "completed") ) %>% # 取消按行分组,避免影响后续数据操作 ungroup()
方案2:向量化运算写法(运行效率高)
如果你的数据量较大,推荐用rowSums()实现向量化运算,不需要分组,运行速度更快:
library(dplyr) df <- df %>% mutate( completed_count = rowSums(select(., -id_number) == "completed") )
两种方案运行后的结果完全一致,你举例的id_number=1438对应的completed_count值为2,其余id的计算结果也完全符合需求逻辑。
内容的提问来源于stack exchange,提问作者gsgilbert
相关产品推荐
相关产品推荐

