2012-10-02 52 views
1

在R中,我有一個很大的數據框(570行,200000列)。對於那些熟悉PLINK的人,我試圖創建一個用於GWAS分析的PED文件。 Plink要求每個缺少的字符都用0編碼。非缺失值是「A」,「T」,「C」或「G」。在數據框的同一列中有數字數據類型和字符數據類型?

因此,例如,數據框架中的數據結構看起來像這樣。

  COL1  COL2 
    PT1 A  T  
    PT2 T  T  
    PT3 A  A 
    PT4 A  T   
    PT5 0  0 
    PT6 A  A 
    PT7 T  A 
    PTn T  T 

當我在Plink中運行我的文件時,出現錯誤。我回去檢查我在R中的文件,發現零是「字符」類型。 R中給定列中可能有兩種不同的數據類型(數字和字符)嗎?我試過讓0的數字類型,並保留字母作爲字符類型,但它不會工作。

+7

當您導出文件時,您可能可以使用'quote = FALSE'並獲取您要查找的行爲。 – Justin

+0

假設PT1..n表示家族ID,COL1和COL2表示n個患者中一個snp的基因型,我提出這些問題。您是否刪除了文件中的標題行:COL1和COL2? PLINK在創建PED文件時不喜歡標題。當您執行assoc過程時,您是否在plink中遇到錯誤,或者當您試圖將問題中的列與個人ID,父親身份,母親身份,性別和表型相結合時,您是否遇到錯誤。這些附加參數對於ped文件是必需的。 – Sathish

+0

嗨Sathish - 是的,我已經刪除標題行,並添加基因型之前,還包括家庭ID,個人ID,父親身份證,母親身份證,性別和表型。我只是展示了一個基因型(第7列和以後)應該是什麼樣子的例子。當我嘗試使用此命令創建二進制PED文件時出現錯誤:plink --file data --make-bed --out data。錯誤是:錯誤:位點「rs1003076」有> 2個等位基因: 個體6 2有基因型[「A」「G」] 但我們已經看到[「0」]和[「A」] – Sheila

回答

2

我認爲賈斯汀的建議可能會解決你有一個的Plink的問題,而是想回答你的大膽問題...

是否有可能在兩個不同的數據類型(數字和字符)在R中給出列?

不是真的,但在這個特定的情況下,當它是一個離散變量時,是的。在R你有因子基本類型,在其他一些語言枚舉。當你讀一個表,讀

> as.integer(x) 
[1] 1 2 5 4 3 

> as.character(x) 
[1] "0" "A" "C" "G" "T" 

現在:

例如試試這個:

x = factor(c("0","A","C","G","T"),levels=c(0,"A","T","G","C")) 
print(x) 

[1] 0 A C G T 
Levels: 0 A T G C 

您可以將它們放回整數(第一級是默認值爲1)和字符。表中,您可以指出所有字符類型都應該作爲因子讀取,即使是那些帶有引號的字符也應該被讀作。

mydata = read.table("yourData.tsv",stringAsFactors=T); 
相關問題