当合并输出同时产生&#34; <na>&#34;和</na>中的NA

时间:2014-04-24 14:16:13

标签: r merge dataframe na

我将两个.csv文件导入R.既不包含任何空值或NULL值,也不包含任何“NA”字符串。

df1 <- read.csv("df1.csv")
df2 <- read.csv("df2.csv")

他们看起来都像这样,确切的列名:

> head(df1)

Chrom Position Gene.Sym Target.ID Type Zygosity Genotype Ref
1 chr10 99219404 MMS19 MMS19_104345.9376 DEL Het TG/T TG
2 chr2 109411248 CCDC138 CCDC138_27210.755 DEL Het GAATAT/G GAATAT
3 chr22 50687970 HDAC10 HDAC10_192036.1834 DEL Het CAT/C CAT

我根据三个列名合并df1和df2:

merged <- merge(df1, df2, by = c("Chrom", "Position", "Gene.Sym"), all = T)

这是数据帧“合并”的一部分; 已将NA替换为数字值,其他字符串替换为“&lt; NA&gt;”:

>head(mergedJec12)
  Chrom Position Gene.Sym     Target.ID.x Type.x Zygosity.x Genotype.x Ref.x Variant.x Var.Freq.x
1  chr1   861368   SAMD11            <NA>   <NA>       <NA>       <NA>  <NA>      <NA>         NA
2  chr1   871334   SAMD11 SAMD11_11.11186    SNP        Het        G/T     G         T   53.06122
3  chr1   876499   SAMD11  SAMD11_14.6196    SNP        Hom        G/G     A         G  100.00000

我希望通过包含NA的某些列进行子集化,但是在“merged”中由其变量化身创建的不一致性会产生问题。好的,我这样做:

merged[merged == '' | merged == 'NA' | merged == '<NA>'] <- NA

但它并没有改变“合并”。 “&lt; NA&gt;”和“NA”保持不变。我在这里缺少什么?

另外,当我跑

NA.only <- merged[regexpr('<NA>', merged$Target.ID.x)>0,]

尝试使数据帧仅包含那些包含合并$ Target.ID.x列的值的行,而是获得一个完全充满NA和“&lt; NA&gt;”的数据帧。我很神秘。

就像一张纸条,我正在写出“&lt; NA&gt;”带空格以避免标记删除。文字中没有空格。

1 个答案:

答案 0 :(得分:0)

这是因为你有all=TRUE<NA>值用于存在于一个数据帧中但不存在于另一个数据帧中的观察值。有关all.xall.y参数的信息,请参阅the documentation

  

all.x :逻辑;如果为TRUE,那么额外的行将被添加到输出中,一个用于x中的每一行,y中没有匹配的行。这些行将在那些通常用y值填充的列中具有NA。默认值为FALSE,因此只有包含x和y数据的行才会包含在输出中。

某些缺失值显示为NA<NA>的原因必须与我的评论中的因素相比,其他类别。因子显示<NA>

> c(1,2,3,NA)
[1]  1  2  3 NA
> factor(c(1,2,3,NA))
[1] 1    2    3    <NA>
Levels: 1 2 3
相关问题