[癌症分型]临床特征的学习和处理

本文档详细介绍了对一组癌症患者数据的处理过程,包括年龄、性别、原发肿瘤部位、TNM分期、微卫星状态等临床特征的数值化转换,以便于后续的聚类分析。通过将非数值特征转换为数值,如将TNM分期和微卫星状态编码,以及使用one-hot编码处理原发肿瘤部位,数据已准备好用于进一步的统计分析和建模。此外,还讨论了TNM分期系统及其对肿瘤严重程度的表示方式。
摘要由CSDN通过智能技术生成

背景:要做癌症的分子分型。现需要对照临床特征。
已有一组数据,需要学习其值的含义,并适当处理这些数据。

数据如下,每行是一名患者:
在这里插入图片描述
为了聚类,需要计算距离,将所有值处理为数字会跟方便。因此需要了解各个值的意思。

age:可以保持。要或不要都行。
gender: 因为是binary的,只有两种取值,所以直接用0和1即可。

运行一下代码:

data <- read.csv("data/TCGAClinical.csv", encoding="UTF-8",sep=",")
# 对每一列,提取所有unique的取值
for (i in c(4:ncol(data))){
  cat(sprintf("%d. %s: \n",i,colnames(data)[i]))
  n_occur <- data.frame(table(data[,i]))
  print(n_occur[n_occur$Freq > 1,])  #告诉你哪些id发生了多次。
  cat("\n\n")
}

Primary Tumor Site (原发肿瘤部位)

有如下8类

idValue说明Freq
1Ascending Colon升直肠,上行直肠
2Cecum盲肠
3Descending Colon下行结肠
4Hepatic Flexure结肠右曲
6Sigmoid Colon乙状结肠
7Splenic Flexure结肠左曲
8Transverse Colon横行结肠

不是binary,各个部位之间不好描述相似性,弄成正交的onehot。

TNM分期

TNM分期系统是目前国际上最为通用的肿瘤分期系统。
I期的肿瘤通常是相对早期的肿瘤有着相对较好的预后。分期越高意味着肿瘤进展程度越高。

  • T(“T”是肿瘤一词英文“Tumor”的首字母)指肿瘤原发灶的情况,随着肿瘤体积的增加和邻近组织受累范围的增加,依次用T1~T4来表示。
  • N(“N”是淋巴结一词英文“Node”的首字母)指区域淋巴结(regional lymph node)受累情况。淋巴结未受累时,用N0表示。随着淋巴结受累程度和范围的增加,依次用N1~N3表示,
  • M(“M”是转移一词英文“metastasis”的首字母)指远处转移(通常是血道转移),没有远处转移者用M0表示,有远处转移者用M1表示。在此基础上,用TNM三个指标的组合(grouping)划出特定的分期(stage)。

参考文献
结直肠癌TNM分期(第八版)
在这里插入图片描述

T原发病灶的侵犯深度(即进展程度):

(“T”是肿瘤一词英文“Tumor”的首字母)指肿瘤原发灶
首先数字越大越严重,字母参考结直肠癌TNM分期(第八版),也是越大越严重。

因此考虑用一个数值来表示,给分。
注意我们的结果里面有T4,也有T4a, T4b. T4 暂时不清楚是a还是b。

idValue给分Freq
1T1211
2T2466
3T36285
4T47.526
5T4a714
6T4b87

N: 癌细胞转移到淋巴结的情况

N(“N”是淋巴结一词英文“Node”的首字母)

idValue给分Freq
1N00236
2N1272
3N1a115
4N1b212
5N1c32
6N24.558
7N2a45
8N2b510

M: 远处转移情况(M分期)(包括远处淋巴结转移、远隔脏器转移和血液转移)

M(“M”是转移一词英文“metastasis”的首字母)

idValue给分Freq
1M00306
2M1248
3M1a17
5MXNA41

Stage:

这看起来像是冗余数据,因为stage可以由TNM推出。
参考文献:TNM分级和分期的关系
TNM分级和分期的关系。

idValue说明Freq
1I63
3II27
4IIA123
5IIB8
7III19
8IIIA11
9IIIB57
10IIIC37
11IV41
12IVA14

Overall Survival (monthes)

总生存(overallsurvival,OS) :从随机化分组开始,至因任何原因引起死亡的时间。对于死亡之前就已经失访的受试者,通常将最后一次随访时间计算为死亡时间。(包括非肿瘤原因引起的死亡,如车祸)
overall survival和disease free的参考链接
看起来是一个数值。应该保持原样即可。
9. Overall.Survival…Months.:
Var1 Freq
1 0 16
5 0.92 3
7 0.99 4
8 1.02 7
12 2 6

Overall.Survival.Status:

要不问一下雷博是啥意思。
考虑使用“生存分析” survival analysis 关键词进行搜索。
根据此链接
生存状态(布尔值):0-Alive;1-Dead

idValue说明Freq
10319
2191

Disease Free( Months)

overall survival和disease free的参考链接
无病生存期(DFS,Disease Free Survival):是指从随机化开始至第一次肿瘤复发/转移或由于任何原因导致受试者死亡的时间(失访患者为最后一次随访时间;研究结束时仍然存活患者,为随访结束日)。通常作为根治术后的主要疗效指标。目前对DFS存在不同定义和解释,不同研究者之间在判断疾病复发或进展时容易产生偏倚。

看起来就是从开始记录,到肿瘤复发/转移的时间。
11. Disease.Free…Months.:
Var1 Freq
1 0 12
6 0.92 3
8 0.99 3
9

Disease.Free.Status:

没找到。
估计就是
0是没有复发吧。

idValue说明Freq
10307
2181

microsatelite:

微卫星参考链接
在这里插入图片描述
那就是分级的吧。

idValue给分Freq
1MSI-H278
2MSI-L180
3MSS0252

数据处理

分数统计好了,就开始替换了:

# ###------- 数值化-----------#

# gender
colnames(data)
colnames(data)[3] # 发现性别类名为female,应改为gender
colnames(data)[3]="gender"
colnames(data)
data$gender = (tolower(data$gender) == "male" )
data$gender = as.numeric(data$gender)
head(data$gender)

# T
data$T = gsub("T1","2", data$T)
data$T = gsub("T2","4", data$T)
data$T = gsub("T3","6", data$T)
data$T = gsub("T4a","7", data$T)
data$T = gsub("T4b","8", data$T)
data$T = gsub("T4","7.5", data$T)
data$T = as.numeric(data$T)
head(data$T)

# N
data$N = gsub("N0","0", data$N)
data$N = gsub("N1a","1", data$N)
data$N = gsub("N1b","2", data$N)
data$N = gsub("N1c","3", data$N)
data$N = gsub("N1","2", data$N)
data$N = gsub("N2a","4", data$N)
data$N = gsub("N2b","5", data$N)
data$N = gsub("N2","4.5", data$N)
data$N = as.numeric(data$N)
head(data$N)

# M
data$M = gsub("M0","0",data$M)
data$M = gsub("M1a","1",data$M)
data$M = gsub("M1","2",data$M)
# MX leave alone
data$M = as.numeric(data$M)
head(data$M)

# microsatelite
data$microsatelite = gsub("MSI-H","2",data$microsatelite )
data$microsatelite = gsub("MSI-L","1",data$microsatelite )
data$microsatelite = gsub("MSS","0",data$microsatelite )
data$microsatelite = as.numeric(data$microsatelite)
head(data$microsatelite)


# Primary.Tumor.Site ( 放最后,因为会增加列)
data$Ascending.Colon = as.numetric(data$Primary.Tumor.Site == "Ascending Colon")
data$Cecum = as.numetric(data$Primary.Tumor.Site == "Cecum")
data$Descending.Colon = as.numetric(data$Primary.Tumor.Site == "Descending Colon")
data$Hepatic.Flexure = as.numetric(data$Primary.Tumor.Site == "Hepatic Flexure Colon")
data$Sigmoid.Colon = as.numetric(data$Primary.Tumor.Site == "Sigmoid Colon")
data$Splenic.Flexure = as.numetric(data$Primary.Tumor.Site == "Splenic Flexure")
data$Transverse.Colon = as.numetric(data$Primary.Tumor.Site == "Transverse Colon")
head(data$Ascending.Colon)
head(data)
# 

# delete stage and Primary.Tumor.Site
data =data[ , -which(colnames(data) %in% c("Primary.Tumor.Site","Stage"))]
head(data)

这样就完成了~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值