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

在R语言中按antibiotic_date合并antibiotic变量的方法咨询

按日期合并抗生素变量的R实现

你需要的是按id和antibiotic_date分组,将同一日期下的antibiotic值合并为空格分隔的字符串,以下是两种适合新手的实现方法:

示例数据构造

先还原你的原始数据:

df <- data.frame(
  id = c(1, 1, 1),
  antibiotic = c("a", "b", "c"),
  antibiotic_date = as.Date(c("2018-01-20", "2018-01-20", "2018-03-04"))
)

方法一:使用dplyr包(tidyverse生态,新手友好)

dplyr的语法更直观,适合数据处理入门:

# 如果没装过dplyr,先安装:install.packages("dplyr")
library(dplyr)

# 分组合并
result_df <- df %>%
  group_by(id, antibiotic_date) %>%  # 按id和日期分组
  summarise(antibiotic = paste(antibiotic, collapse = " "),  # 合并同组的抗生素值
            .groups = "drop")  # 取消分组状态

# 查看结果
print(result_df)

运行后会得到你想要的结果:

# A tibble: 2 × 3
     id antibiotic_date antibiotic
  <dbl> <date>          <chr>     
1     1 2018-01-20      a b       
2     1 2018-03-04      c         

方法二:Base R原生方法(无需额外装包)

如果不想安装新包,用Base R的aggregate函数也能实现:

result_base <- aggregate(
  antibiotic ~ id + antibiotic_date,  # 指定分组变量和待合并列
  data = df,
  FUN = function(x) paste(x, collapse = " ")  # 自定义合并逻辑
)

print(result_base)

注意事项

  • 确保antibiotic_date是日期类型(用as.Date()转换),避免因字符串格式不一致导致分组错误;
  • 如果你的实际数据有多个id,两种方法都会自动按每个id单独分组处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:25:39