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

Excel中如何生成两列唯一值之间的0/1映射交叉表

实现0/1关联映射表的方法

下面提供三种不同场景下的实现方案:

1. R语言实现(适合生物信息分析场景)

你可以直接使用tidyverse套件的宽表转换功能完成需求,代码如下:

# 加载依赖包
library(tidyverse)
# 读入原始制表符分隔的表格
raw_df <- read.delim("你的原始文件路径.txt", sep = "\t", header = TRUE)
# 转换为0/1映射表
onehot_df <- raw_df %>%
  # 新增标记列,代表对应行的Ortho和Path存在关联
  mutate(associate = 1) %>%
  # 转换为宽表,列名取自Path的唯一值,无关联的位置填充0
  pivot_wider(
    names_from = Path,
    values_from = associate,
    values_fill = list(associate = 0)
  )
# 导出结果为制表符分隔文件
write.table(onehot_df, "输出文件路径.txt", sep = "\t", row.names = FALSE, quote = FALSE)

2. Python实现(适合通用数据处理场景)

使用pandas的透视表功能即可快速生成结果:

import pandas as pd
# 读入原始数据
raw_df = pd.read_csv("你的原始文件路径.txt", sep="\t")
# 新增关联标记
raw_df["flag"] = 1
# 生成0/1映射透视表
onehot_df = pd.pivot_table(
    raw_df,
    index="Ortho",
    columns="Path",
    values="flag",
    fill_value=0
).reset_index()
# 导出结果
onehot_df.to_csv("输出文件路径.txt", sep="\t", index=False)

3. Linux命令行实现(适合大文件快速处理)

不需要打开任何数据分析软件,直接用awk命令即可完成计算,适合超大规模的注释文件处理:

awk '
BEGIN{FS=OFS="\t"}
# 跳过表头行
NR==1{next}
{
    # 分别存储Ortho、Path的唯一值,以及两者的关联映射
    ortho_set[$1] = 1
    path_set[$2] = 1
    assoc_map[$1,$2] = 1
}
END{
    # 打印表头
    printf "Ortho"
    for (p in path_set) printf OFS p
    print ""
    # 逐行打印每个Ortho的关联结果
    for (o in ortho_set) {
        printf o
        for (p in path_set) printf OFS (assoc_map[o,p] ? 1 : 0)
        print ""
    }
}' 你的原始文件.txt > 输出结果.txt

注意:你提供的示例输出中存在重复的行名(比如重复出现L20795),属于示例错误,上述方法输出的结果每个唯一Ortho只会出现一行,符合统计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:24:03