You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中用apply简化按菌种统计药物药敏频率的操作

按菌种批量统计药敏频率的实现方案

假设你的数据集用Pandas存储,结构大概是这样(示例):

菌种名称青霉素头孢呋辛左氧氟沙星
大肠杆菌SRS
大肠杆菌RSI
肺炎克雷伯菌SSR
肺炎克雷伯菌RRS

下面是不用重复写代码的批量实现方法:

1. 自定义药敏统计函数

先写一个通用函数,用来计算单列药物的各类药敏结果频率:

def calculate_antibiotic_freq(series):
    # 计算各类药敏结果的占比,保留两位小数并转成百分比格式
    freq = series.value_counts(normalize=True).round(2) * 100
    return freq.apply(lambda x: f"{x}%")

2. 分组后批量应用函数

用groupby按菌种分组,然后对所有药物列(排除菌种名称列)批量应用上面的函数:

import pandas as pd

# 假设你的数据集叫df
drug_cols = df.columns.drop("菌种名称")  # 提取所有药物列
result = df.groupby("菌种名称")[drug_cols].apply(calculate_antibiotic_freq)

# 整理结果格式,让输出更直观
result = result.unstack(level=-1).reset_index()

3. 扩展:针对特定药敏类型统计

如果只需要统计「敏感(S)」的频率,可以修改自定义函数:

def calculate_sensitive_freq(series):
    sensitive_rate = (series == "S").mean().round(2) * 100
    return f"{sensitive_rate}%"

result_sensitive = df.groupby("菌种名称")[drug_cols].apply(calculate_sensitive_freq)

关键说明

  • 不用逐个复制代码的核心是:用groupby分组后,直接对多列批量应用自定义函数,避免重复编写每个药物的统计代码。
  • 如果你的药敏标记是数值型(比如1=敏感,0=耐药),只需要调整函数里的判断逻辑即可。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:06:02