【问题标题】:Subsetting by NA when merge output creates both "<NA>" and NA in R合并输出在 R 中创建“<NA>”和 NA 时由 NA 子集
【发布时间】:2014-04-24 14:16:12
【问题描述】:

我正在将两个 .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,将其他字符串替换为“”:

>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 == 'NA' | merged == '<NA>'] <- NA

但它不会改变任何“合并”。 “”和 NA 保持不变。我在这里错过了什么?

还有,当我跑步时

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

要尝试制作一个数据框,该数据框仅包含那些包含合并 $Target.ID.x 列中的值的行,而是得到一个完全充满 NA 和“”的数据框。我很困惑。

作为一个注释,我正在写出带有空格的“”以避免标记删除。文字中没有空格。

【问题讨论】:

  • 你应该使用is.na()而不是== NA
  • 这可能是试图合并不同级别的因素造成的问题。在您最初的 read.csv 调用中执行 stringsAsFactors=FALSE 并查看合并后是否消失。
  • @Thomas: 结果和以前一样

标签: r merge dataframe na


【解决方案1】:

这是因为你有all=TRUE&lt;NA&gt; 值适用于存在于一个数据帧中但不存在于另一个数据帧中的观测值。请参阅 the documentation 关于 all.xall.y 参数:

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

正如我在评论中所说,某些缺失值显示为NA&lt;NA&gt; 的原因与因素与其他类有关。 &lt;NA&gt; 为因素显示:

> 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

【讨论】:

  • 我想要带有 NA 的行。我的问题是产生了两种不同的类型,似乎取决于列中的其他值是否为数字。
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 2021-11-12
相关资源
最近更新 更多