Série 3 de mineração de banco de dados clínico - ensina você a usar a linguagem R para limpar o banco de dados de sementes

Insira a descrição da imagem aqui
Depois de baixar os dados do banco de dados do SEER, algumas pessoas se sentirão perdidas, pois os dados não foram limpos e classificados, não podem ser transformados na forma reconhecida por nosso software estatístico e não podem ser analisados. Hoje vamos ensinar como limpar o banco de dados seed usando a linguagem R, para que os dados possam ser usados ​​por nós.
Primeiro, importe o pacote R de que precisamos, o que requer estrangeiro, carro e stringr, que deve ser baixado primeiro.
Insira a descrição da imagem aqui
Em seguida, importamos os dados baixados para o R. Existem mais de 200.000 dados, que é impossível modificar manualmente.

be<-read.csv("E:/r/test/seer4.csv",sep=',',header=TRUE)

Insira a descrição da imagem aqui
Observe o nome e a forma dos dados e a variável
head (be)
names (be)
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
parece muito confusa, alguns nomes são muito longos, mude os nomes todos

colnames(be)<-c("sex","time","rezult","rezult1","status","race","Subtype","nodes","Lymph.Invasion",
                "tumor.size","extension","lymph.nodes","age","ajcc")#数据太长,重新命名

Vamos verificar o conjunto de dados novamente. Desta vez, é muito mais refrescante.
Insira a descrição da imagem aqui
Descobrimos que há 14 variáveis ​​no total, entre as quais Lymph.Invasion tem dados ausentes, que não podem ser analisados ​​de todo e só podem ser excluídos. Essa é a frustração de bases de dados públicas.

be<-be[,-9]#删掉第9列Lymph.Invasion,因为都是缺失的数据

Insira a descrição da imagem aqui
Muitas variáveis ​​nos dados são strings, que não atendem aos requisitos, temos que transformá-las em números

be$sex<-ifelse(be$sex=="Female",1,ifelse(be$sex=="Male",2,NA))#性别转换成1和2,缺失的使用NA表示,其他的相同
be$rezult1 <-ifelse(be$rezult1 =="Alive or dead due to cancer",1,
                    ifelse(be$rezult1 =="Dead (attributable to causes other than this cancer dx)",
                           2,NA))
be$status<-ifelse(be$status=="Alive",0,ifelse(be$status=="Dead",1,NA))
be$race<-ifelse(be$race=="White",1,ifelse(be$race=="Black",2,3))
be$Subtype<-recode(be$Subtype,"'HR-/HER2- (Triple Negative)'=1;
       'HR-/HER2+ (HER2 enriched)'=2;'HR+/HER2- (Luminal A)'=3;
       'HR+/HER2+ (Luminal B)'=4;else=NA")#这里是4个分类变量,使用ifelse函数套叠胎麻烦,改用car函数
be$nodes[be$nodes=="Blank(s)"]=NA#让数据中的Blank(s)变为缺失值,下面同理
be$tumor.size[be$tumor.size=="Blank(s)"]=NA
be$extension[be$extension=="Blank(s)"]=NA
be$lymph.nodes[be$lymph.nodes=="Blank(s)"]=NA
be$age<-str_extract(be$age, "\\d+")#把年龄里面的数字提取出来
be$ajcc[be$ajcc=="Blank(s)"]=NA

Insira a descrição da imagem aqui
OK, a conversão está quase concluída. Vamos dar uma olhada. Rezult é inútil. Nós o ignoramos e o excluímos mais tarde. O que precisamos é rezult1.
Insira a descrição da imagem aqui
Ajcc. Não convertemos porque não precisamos usá-lo ainda. Quando falamos sobre a exploração dos efeitos de interação Vamos falar sobre isso durante a análise. Agora ignore-o primeiro. Se você tem transtorno obsessivo-compulsivo, também pode convertê-lo de acordo com nosso código acima.
OK, já está feito? Não, há outra variável importante que não foi gerada, que é o resultado do risco competitivo.
Vamos gerá-la agora.

be$status1<-ifelse(be$status==0,0,ifelse(be$rezult1==1,1,2))

Finalmente os dados saem,
Insira a descrição da imagem aqui
imprima-os como 1.csv

write.csv(be,file = "1.csv")

Por fim, abra 1.csv e resolva-os. Estes são os dados que queremos publicar.
Insira a descrição da imagem aqui
Mais de 200.000 dados. Enviar um SCI básico ou de pontuação baixa em chinês não é fácil, como jogar.
Se você quiser saber mais sobre o processo de mineração de dados, preste atenção aos meus tutoriais de pesquisa científica. Para
artigos mais interessantes, preste atenção à conta pública: pesquisa baseada em zero
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/dege857/article/details/112795092
Recomendado
Clasificación