过滤功能在 MacBook 上不起作用。不能用 excel,不能用命令行,不能用 R

问题描述 投票:0回答:1

所以我有一个非常简单的 20k 行和 6 列的数据框,其中最后一列是一个数字,我想提取仅包含该数字 == 21 的行。非常简单的任务。但是,当我在 Excel 中进行列过滤时,它会返回很多行,其中不仅包含这个数字。

如果我用文本编辑器打开 csv 文件,它看起来非常好。

Gene,C,Z,Pval,FDR,Module
DNAH12,0.3628060037231064,617.990756638713,0.0,0.0,1.0
ABCA13,0.33464085936971066,569.9951132122194,0.0,0.0,1.0
PRB4,0.3353517120266698,566.667077873011,0.0,0.0,2.0
RP1,0.31793884623691454,544.7152358537128,0.0,0.0,1.0
CFAP299,0.3137380915326569,537.1739281421044,0.0,0.0,1.0

我切换到 R。我明白了。

     Gene         C        Z Pval FDR Module
1  DNAH12 0.3628060 617.9908    0   0      1
2  ABCA13 0.3346409 569.9951    0   0      1
3    PRB4 0.3353517 566.6671    0   0      2
4     RP1 0.3179388 544.7152    0   0      1
5 CFAP299 0.3137381 537.1739    0   0      1
6   DMBT1 0.3065342 518.7397    0   0      2
> table(df$Module)[22]
 21 
331 
> nrow(df[df$Module==21,])
[1] 20556

看到了吗?本来我应该有 331 个项目,但现在我有 20556 个。然后我尝试使用 Linux 命令行提取它。下面简单的代码。然后我得到了一个包含 2132 行的新文件。现在我完全不知道我的笔记本电脑发生了什么。今天下午是完全正常的,然后今晚就这样了。我还尝试重新启动我的笔记本电脑。结果保持不变。我现在完全困惑为什么会发生这种事......

grep '21.0' /Users/jiajia/Desktop/hotspot_results.csv > /Users/jiajia/Desktop/module21.csv

我使用的是 MacBook 2018 Intel,系统 13.6.6。有人遇到过类似的问题吗?

r excel macos csv filter
1个回答
0
投票

为了扩展@rawr 的评论,当您进行逻辑比较(如

==
)并且一侧丢失(
NA
)时,它会返回结果的
NA
。 当您使用
NA
进行索引时,它会返回
NA
元素或行。

这是一个快速而简短的示例来说明这一点:

> mydf <- data.frame(x=1:5, Module=c(1, 21, 21, NA, NA))
> mydf[mydf$Module==21,]
      x Module
2     2     21
3     3     21
NA   NA     NA
NA.1 NA     NA

因此,虽然我们想要的计数是 2,但结果有 4 行,因为有 2 行包含 NA。 我们也可以通过检查缺失来获得正确的子集:

> mydf[!is.na(mydf$Module) & mydf$Module==21,]
  x Module
2 2     21
3 3     21

你也可以通过做一个逻辑比较表来看到这一点:

> table(mydf$Module==21, useNA='ifany')

FALSE  TRUE  <NA> 
    1     2     2 

使用您的数据尝试上述任一方法,看看是否可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.