R语言计算特定字符串随时间变化的出现占比并绘制折线图
R实现方案
1. 依赖安装与加载
使用tidyverse生态的工具即可完成需求,包含数据处理和绘图所需的全部功能:
# 首次使用先安装包 install.packages("tidyverse") # 加载包 library(tidyverse)
2. 数据导入
如果是本地存储的数据集,可直接用read.csv()/read.table()读取,以下是对应你给出的样例数据的构造代码,实际使用时替换为你自己的读取逻辑即可:
df <- read.table(text = "Individual Year ID A 1 R A 1 S A 1 T A 2 T B 1 T B 5 T C 7 S D 9 K D 8 H E 1 S", header = TRUE)
3. 计算每年ID为S的占比
按年份分组统计总数和S的数量,直接计算占比即可:
s_ratio <- df %>% group_by(Year) %>% summarise( total_id = n(), s_count = sum(ID == "S"), `Percentage of S` = s_count / total_id ) %>% select(Year, `Percentage of S`)
运行后输出的s_ratio和你给出的期望结果完全一致。
4. 绘制折线图
ggplot(s_ratio, aes(x = as.factor(Year), y = `Percentage of S`, group = 1)) + geom_line(color = "#2c3e50", linewidth = 1) + geom_point(size = 3, color = "#e74c3c") + labs(x = "年份", y = "ID为S的占比", title = "ID S随年份的演变趋势") + theme_minimal()
如果需要x轴展示连续的完整年份(包含没有ID记录的年份),把as.factor(Year)改为Year即可,无数据的年份会自动留白。
内容的提问来源于stack exchange,提问作者PCRL
相关产品推荐
相关产品推荐

