在数据框的同一列中具有数字数据类型和字符数据类型?

时间:2012-10-02 18:22:33

标签: r dataframe types

我在R中有一个大数据框(570行乘200000列)。对于那些熟悉PLINK的人,我正在尝试为GWAS分析创建一个PED文件。 Plink要求每个丢失的字符都用零编码。非缺失值是“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设为数字类型,并将字母保留为字符类型,但它赢得了'工作。

1 个答案:

答案 0 :(得分:2)

我认为贾斯汀的建议可能会解决你对Plink的问题,但想以粗体回答你的问题......

R中给定列中是否可以有两种不同的数据类型(数字和字符)?

不是真的,但在这个特殊场景中,当它是一个离散变量时,有点肯定。在R中,你有 factor 基本类型,在其他一些语言中是枚举。

例如试试这个:

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)和字符:

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

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

现在,当您阅读带有read.table的表时,您可以指出所有字符类型都应该被读作因素,即使是那些带有引号的那些。

mydata = read.table("yourData.tsv",stringAsFactors=T);