Добрый вечер всем, у меня есть фрейм двоичных данных, в котором в первом столбце указано имя гена, а в другом 31 примере. Я хочу сгруппировать образец в соответствии с наличием / отсутствием гена (1/0) и попытаться визуализировать его с помощью графика или дерева. У меня было бы дерево с моими 31 образцом, сгруппированным согласно присутствию / отсутствию гена. Я делаю этот анализ в R.
Gene Sample_1 Sample2 ... Sample31
Gene_1 1 0 0
Gene_2 0 1 1
.
. Надеюсь, вы поймете, как организован фрейм данных
Вот код, который я использую:
meta <- read.csv("gene_presence_absence.csv")
colnames(meta)
distance <- dist(meta)
hc_m <- hclust(distance)
plot(hc_m)
colnames(meta)
idx <- which(colnames(meta) %in%
c("Gene","BackhedF_2015__SID26_4M__bin.5"
,"BackhedF_2015__SID377_4M__bin.14"
, "BackhedF_2015__SID377_B__bin.9"
, "BackhedF_2015__SID387_4M__bin.4"
,"BackhedF_2015__SID633_4M__bin.14"
, "BackhedF_2015__SID78_B__bin.8"
,"ChengpingW_2017__AS100raw__bin.22"
, "ChengpingW_2017__AS2raw__bin.23"
,"FengQ_2015__SID530163__bin.32"
,"FerrettiP_2018__CA_C10003IS2042FE_t4M15__bin.6"
,"GeversD_2014__SKBSTL035__bin.2"
,"HeQ_2017__SZAXPI029582.100__bin.54"
,"KosticAD_2015__PRJNA231909.3112121__bin.18"
, "KosticAD_2015__PRJNA231909.3117383__bin.25"
,"LiJ_2014__V1.FI13__bin.57"
,"LiJ_2014__V1.FI17__bin.50"
,"SchirmerM_2016__G89070__bin.14"
,"VatanenT_2016__G69189__bin.6"
,"VatanenT_2016__G78738__bin.5"
,"VatanenT_2016__G78795__bin.4"
,"VatanenT_2016__G78890__bin.12"
, "VatanenT_2016__G78894__bin.6"
,"VatanenT_2016__G80281__bin.6"
,"VatanenT_2016__G80326__bin.1"
, "XieH_2016__YSZC12003_36019__bin.38"
,"XieH_2016__YSZC12003_36795__bin.41"
, "XieH_2016__YSZC12003_37332__bin.60"
,"ZeeviD_2015__158__bin.56"
,"ZeeviD_2015__168__bin.36"
, "ZeeviD_2015__354__bin.43" ))
my_data <- data.frame(meta[,idx],
row.names = rownames(meta))
m <- ifelse(my_data == "", 0, 1)
m <- as.data.frame(m)
m$Gene <- my_data$Gene
m[is.na(m)] <- 0
m
###Created a binary matrix with 0 and 1 according to presence or not gene
zz <- t(m)
zz
anyNA(zz)
d <- dist(zz)
my_clust <- hclust(zz)
plot(my_clust)
Основная проблема в том, что функция dist () выдает только NA