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

如何将两个独立数据集合并为含用药状态列的长格式?

合并吸毒者与非吸毒者数据集为指定长格式

原始数据集结构

吸毒者数据集df:

> dput(df)
structure(list(ID_druguser = c("123", "234", "324", "345"), Test_Result = c("POSITIVE", "NEGATIVE", "NEGATIVE", "NEGATIVE"), Year_of_Birth = c("1931", "1932", "1932", "1932")), class = "data.frame", row.names = c(NA, -4L))

非吸毒者数据集df2:

> dput(df2)
structure(list(ID_NONdruguser = c("955", "567", "856", "866"), Test_Result = c("NEGATIVE", "NEGATIVE", "NEGATIVE", "POSITIVE"), Year_of_Birth = c("1932", "1932", "1932", "1932")), class = "data.frame", row.names = c(NA, -4L))

目标格式

需合并为包含ID、Drug_status、Test_Result、Year_of_Birth的长格式数据集:

> dput(df_final)
structure(list(ID = c("123", "234", "324", "345", "955", "567", "856", "866"), Drug_status = c("Yes", "Yes", "Yes", "Yes", "No", "No", "No", "No"), Test_Result = c("POSITIVE", "NEGATIVE", "NEGATIVE", "NEGATIVE", "NEGATIVE", "NEGATIVE", "NEGATIVE", "POSITIVE"), Year_of_Birth = c("1931", "1932", "1932", "1932", "1932", "1932", "1932", "1932")), class = "data.frame", row.names = c(NA, -8L))

解决方案

方法1:Base R 实现

# 处理吸毒者数据集:重命名ID列并添加状态标识
df_processed <- df
names(df_processed)[names(df_processed) == "ID_druguser"] <- "ID"
df_processed$Drug_status <- "Yes"

# 处理非吸毒者数据集:重命名ID列并添加状态标识
df2_processed <- df2
names(df2_processed)[names(df2_processed) == "ID_NONdruguser"] <- "ID"
df2_processed$Drug_status <- "No"

# 合并两个处理后的数据集
df_final <- rbind(df_processed, df2_processed)

方法2:Tidyverse (dplyr) 实现

如果习惯使用tidyverse工具链,代码会更简洁:

library(dplyr)

df_final <- bind_rows(
  # 处理吸毒者数据
  df %>% 
    rename(ID = ID_druguser) %>% 
    mutate(Drug_status = "Yes"),
  # 处理非吸毒者数据
  df2 %>% 
    rename(ID = ID_NONdruguser) %>% 
    mutate(Drug_status = "No")
)

两种方法最终生成的df_final结构都与目标格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:50:53