R入门:如何将字符列基因突变DataFrame转为整数列样本矩阵?
基因-样本突变矩阵转换方案
下面提供两种适合R新手的实现方法,都能完成你需要的格式转换:
方法一:用tidyverse工具包(推荐,代码逻辑更清晰)
如果还没装tidyverse,先安装加载:
# 仅首次运行需要安装 install.packages("tidyverse") library(tidyverse)
通过管道流一步步处理:
dataframe2 <- dataframe1 %>% # 先去重:同一个基因在同一样本的多条突变记录只留一条 distinct(`gene name`, sample, .keep_all = TRUE) %>% # 新增值列,标记存在突变的记录为1 mutate(value = 1) %>% # 转换为宽表,样本名作为列,缺失的基因-样本组合填0 pivot_wider( names_from = sample, values_from = value, values_fill = 0, id_cols = `gene name` ) %>% # 将基因名称设为行名 column_to_rownames(var = "gene name")
方法二:基础R原生方法(无需额外安装包)
用基础R的table函数快速生成交叉表,再转成0-1矩阵:
# 生成基因与样本的交叉频数表 cross_tab <- table(dataframe1$`gene name`, dataframe1$sample) # 把频数大于0的替换为1,其余为0,转成数据框 dataframe2 <- as.data.frame(ifelse(cross_tab > 0, 1, 0))
结果验证
运行后执行print(dataframe2),就能得到你想要的目标结构。
内容的提问来源于stack exchange,提问作者fatemeh
相关产品推荐
相关产品推荐

