R语言统计包含Moderna的记录总数的实现方法咨询
R统计含'Moderna'记录的可行方案
原代码问题说明
原代码使用group_by(vaccines)是按照vaccines字段的完全匹配值分组,只有整个vaccines字段内容完全一致的记录才会被分到同一组,而数据中vaccines字段为多疫苗混合存储,不同的疫苗组合会被拆分为不同分组,因此无法直接汇总所有包含Moderna的记录总数。
可行解决方案
方案1:tidyverse生态实现(dplyr+stringr)
适合习惯使用tidyverse语法的场景,代码可读性更高:
# 若未安装依赖可先执行 install.packages("tidyverse") library(tidyverse) Number_Of_Countries_Using_Moderna <- Number_of_Vaccines_used %>% # 模糊匹配vaccines字段中包含Moderna的记录,ignore_case设为TRUE可忽略大小写差异 filter(str_detect(vaccines, "Moderna", ignore_case = TRUE)) %>% # 对n列求和,na.rm = TRUE可避免空值导致计算结果异常 summarize(Moderna_Countries = sum(n, na.rm = TRUE))
方案2:基础R实现
无需安装额外依赖包,直接用R内置函数完成:
# 用grepl做正则匹配,返回所有包含Moderna的记录索引 moderna_rows <- grepl("Moderna", Number_of_Vaccines_used$vaccines, ignore.case = TRUE) # 对对应行的n列求和 Number_Of_Countries_Using_Moderna <- sum(Number_of_Vaccines_used$n[moderna_rows], na.rm = TRUE)
内容的提问来源于stack exchange,提问作者Kai Li
相关产品推荐
相关产品推荐

