在R中基于两个数据集计算基因的Pearson相关系数及匹配CTN数据
匹配CTN值并计算基因的Pearson相关系数
完全没问题!这其实是R数据处理里很常见的操作,我来一步步给你讲清楚怎么做:
步骤1:准备环境
首先确保你安装并加载了tidyr和dplyr包(这两个是tidyverse家族的核心工具,处理数据超方便):
install.packages(c("tidyr", "dplyr")) # 如果还没安装的话 library(tidyr) library(dplyr)
步骤2:把宽格式的功能多样性数据转成长格式
你的df是宽格式(每个物种占一列),而ctn_df是长格式,咱们先把df转成和ctn_df匹配的长格式:
df_long <- df %>% pivot_longer(cols = -Human_Gene_Name, # 除了基因名之外的所有列都要转换 names_to = "Species", # 转换后的物种名列名 values_to = "Functional_Diversity") # 转换后的功能多样性列名
转换后的数据结构会变成每一行对应一个基因+一个物种的组合,这样就和ctn_df的结构对齐了。
步骤3:匹配CTN值
接下来用left_join把两个表按Species列合并,就能自动把每个物种的CTN值对应到对应的功能多样性数据上:
df_combined <- df_long %>% left_join(ctn_df, by = "Species")
这一步完成后,你就能看到每个基因-物种行里同时有Functional_Diversity和CTN两个数值了。
步骤4:计算每个基因的Pearson相关系数
最后咱们按基因分组,对每个基因的功能多样性和CTN值计算皮尔逊相关系数:
gene_correlations <- df_combined %>% group_by(Human_Gene_Name) %>% summarize(Pearson_Correlation = cor(Functional_Diversity, CTN, method = "pearson"))
运行完这段代码,gene_correlations里就会列出每个基因对应的皮尔逊相关系数啦!
举个例子,输出大概是这样的:
# A tibble: 3 × 2 Human_Gene_Name Pearson_Correlation <chr> <dbl> 1 A1CF 0.782 2 AAK1 0.654 3 AAMP 0.591
内容的提问来源于stack exchange,提问作者Jack Dean
相关产品推荐
相关产品推荐

