我已經從包含SNP信息的表創建了一個genind對象。如何將地層信息添加到genind
我需要將人口信息插入這個genind。
我知道哪些個人(通過數字標識)應該進入每個人羣。
我該如何選擇正確的個體並將它們放入不同的羣體?
我已經從包含SNP信息的表創建了一個genind對象。如何將地層信息添加到genind
我需要將人口信息插入這個genind。
我知道哪些個人(通過數字標識)應該進入每個人羣。
我該如何選擇正確的個體並將它們放入不同的羣體?
在提問時做出可重複的示例總是有幫助的。
首先,加載必要的庫(肯定它adegenet)
library(adegenet)
首先讓等位基因
alleles <- paste0("0",1:4)
座的設定數量的矢量製作一些假的數據,人均個人,人口數量
nloci <- 10
nind <- 10
npops <- 2
使用for循環,使假的數據集
i <- NULL
out <- NULL
for(i in 1:npops){
#there are nind*nloci genotypes in each population
#make a
gts <- replicate(n = nind*nloci,
expr = paste0(sample(x = alleles,size = 1,replace = T),
sample(x = alleles,size = 1,replace = T)))
gts <- as.data.frame(matrix(data = gts,
nrow = nind, ncol = nloci, byrow = T))
#making generic locus colnames()
colnames(gts) <- paste("locus_",1:nloci)
out <- rbind(out,gts)
} #end of for loop
head(out)
現在轉換是data.frame成genind
obj <- df2genind(out, ploidy=2, ncode=2)
obj
注意,row.names()被認爲是個人的ID
現在對於設置的人口,現在注意它的空白
[email protected]
你只需要一個向量,代表不滿對應每個人的人口。
如果您的個人ID由人口聚集(如1-10是從POP1和11-20來自POP2),那麼這樣的事情應該工作
pops<- paste0("pop",1:npops)
設置使用媒介種羣,確保它的一個因素
[email protected] <- as.factor(rep(pops,each=nind))
[email protected]
如果包含您的SNP信息的原始數據幀(表格)也包含人口信息,則可以使用該數據幀作爲您的向量。如果out
看起來像這樣
out$pops <- sample(x = pops,size = nrow(out),replace = T)
head(out)
那麼你就可以使用該列作爲載體
[email protected] <- as.factor(out$pops)
[email protected]
另外,如果你有另外的表使你能夠確定哪些人相當於哪些人口,那麼你使用這些信息。它假定第二個表(data.frame)是相同的行數作爲out
下面是一個例子第二表
df <- data.frame(pops = rep(pops,each=nind),
id = sample(x = 1:nrow(out),size = nrow(out),replace = F))
head(df)
注意,ID是不是爲了,但他們在out
並因此在obj
,所以需要df
他們以正確的順序後,要由df$id
df <- df[order(df$id),]
head(df)
下令
[email protected] <- as.factor(df$pops)
[email protected]
非常感謝您對於不包含數據集或示例感到抱歉,我對這一切都是陌生的! 我的問題是,個人ID不是由羣體聚類。 例如,我有個人001,002,003,... 450 我知道有2個人口。 但是人口1是由個人組成的001,006,009,150,... 人口2是由個人002,003,004,005,007,008,010, 組成的。這就是我陷入困境的地方。 再次感謝您的時間! –
沒問題,很高興我能幫助一位遺傳學家。包含SNP信息的表是否也有識別ID和總體的列?或者您是否有另一張表,其中包含兩個不同列的人口和ID信息? – Sardimus
實際上比這更復雜。 我有ID爲行的SNP表。然後我進行聚類分析和MDS來探索我的數據,看到兩個不同的「人口」形成。在這兩種情況下,我都能夠從兩個羣體中提取哪些身份證(兩種身份證相匹配)。我現在需要一種方法來創建一個等級級別,我可以將其插入到AMOV中以證明存在人口分化。我正在考慮創建兩個「人口」插入到genind對象中,然後將其用作我的層次級別。但我不知道該怎麼去做。 –