如何将含患者突变信息的单列DataFrame转换为多列标记格式
R语言:将单列突变数据转换为多列标记格式
原始数据
给定的初始DataFrame定义如下:
df <- data.frame( mutations = c('A497T', NA, 'C320T', 'A497T', NA, 'G621C', 'G621C') )
实现方法
方法一:基础R(无需额外包)
先提取非NA的唯一突变类型,再逐列生成携带标记:
# 获取所有非NA的唯一突变类型 unique_mutations <- na.omit(unique(df$mutations)) # 生成新的DataFrame,匹配突变则标记"Yes",否则为NA result_df <- as.data.frame( lapply(unique_mutations, function(mut) { ifelse(df$mutations == mut, "Yes", NA) }) ) # 设置列名为对应的突变类型 colnames(result_df) <- unique_mutations
方法二:tidyverse工具包(更简洁)
利用pivot_wider直接完成宽表转换:
library(tidyverse) result_df <- df %>% # 为携带突变的行添加标记值"Yes" mutate(flag = "Yes") %>% # 按突变类型拆分列,未携带的位置填充NA pivot_wider(names_from = mutations, values_from = flag, values_fill = NA)
最终输出
运行代码后得到的result_df结构如下:
> result_df A497T C320T G621C 1 Yes <NA> <NA> 2 <NA> <NA> <NA> 3 <NA> Yes <NA> 4 Yes <NA> <NA> 5 <NA> <NA> <NA> 6 <NA> <NA> Yes 7 <NA> <NA> Yes
内容的提问来源于stack exchange,提问作者roybatty
相关产品推荐
相关产品推荐

