使用重塑命令后因子水平错误

wrong level of factor after using reshape command

我有以下数据,

   Sample_ID   SNP_Name Genotype Phenotype CV.Group
1     AUS002  rs1028005       AA         1        4
2     AUS002  rs4788050       TC         1        4
3     AUS002 rs17143930       CC         1        4
4     AUS002  rs3920214       AA         1        4
5     AUS002  rs1862520       GG         1        4
6     AUS002  rs1461224       AC         1        4

我用下面的命令重塑了它:

reshaped.data <- reshape(merged.data, timevar = "SNP_Name", idvar = c("Sample_ID","Phenotype","CV.Group"), direction = "wide")

根据 Sample_ID 给出我想要的分组,它工作正常,每个变量将仅给出三个类别(基因型数据)。

      Sample_ID Phenotype CV.Group Genotype.rs1028005 Genotype.rs4788050
1        AUS002         1        4                 AA                 TC
4039     AUS003         1        3                 GG               <NA>
7927     AUS004         1        4                 AA                 TC
11965    AUS005         0        2                 AG                 TT
16003    AUS007         0        2                 AA                 TC

但是,当我尝试将其中一个变量制成表格时,它也显示了其他级别,而它应该只有三个(例如 AA、AG 和 GG)。哪里出错了?

table(reshaped.data$Phenotype,reshaped.data$Genotype.rs1028005)

  -- AA AC AG AT CC CG GC GG TA TC TG TT
0  0 45  0 35  0  0  0  0  4  0  0  0  0
1  0 16  0 12  0  0  0  0  3  0  0  0  0

我认为这是重塑数据集后未使用级别的情况。要删除 'factor' 变量中的那些 levels,我们可以再次调用 factor 或使用函数 droplevels 删除那些未使用的级别。

table(droplevels(reshaped.data$Phenotype),
                 droplevels(reshaped.data$Genotype.rs1028005))

或者只是

 reshaped.data <- droplevels(reshaped.data)
 table(reshaped.data[,c('Phenotype', 'Genotype.rs1028005')])