【发布时间】: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: 结果和以前一样