2016-03-08 41 views
0

我有三个表A,B和C,每个表具有不同值的列。 我想创建与每个表中满足2个条件,但我也想使行与NA输出NA行新的数据帧:创建具有多个条件的数据帧保持NA条目

A=read.table(file.choose(),header=TRUE,row.names=1,sep="\t") 
B=read.table(file.choose(),header=TRUE,row.names=1,sep="\t") 
C=read.table(file.choose(),header=TRUE,row.names=1,sep="\t") 
newtable = data.frame(V1=A$X1>2 | A$X2<0.05, V2=B$X1>2 | B$X2<0.05, V3=C$X1>2 | C$X2<0.05) 

我得到的只有符合条件的与TRUE或行FALSE但我不明白那里是NA行,但如果我只用一个条件

newtable = data.frame(V1=A$X1<0.05, V2=B$X1<0.05, V3=C$X1<0.05) 

然后我得到的是这样的:

A B C 
1 TRUE TRUE TRUE 
2 TRUE FALSE TRUE 
3 TRUE FALSE TRUE 
4 NA NA NA 
5 NA NA NA 

w ^这是我想要的(但有两个条件)。

有什么建议吗?

编辑:输入表的 例子:

table A: 
    X1   X2 
1 4.4923656 0.03201e-02 
2 -0.3764287 0.00747e-07 
3 -0.7192387 0.00523e-12 
4  NA   NA 
5 -3.6088963 NA 
6  NA   NA 

table B: 

    X1   X2 
1 4.256852  0.04948311 
2 -0.12365814 0.990901 
3 1.2365852 0.21697529 
4  NA   NA 
5 7.2569852 NA 
6  NA   NA 

table C: 
    X1   X2 
1 8.1254874 0.074346e-02 
2 -0.4587125 6.658373e-10 
3 2.3256984 4.527989e-03 
4  NA   NA 
5 -4.2365874 NA 
6  NA   NA 
+2

我不知道你是否回答了你自己的问题。你可以用'dput(A)'代替'A < - read.table',并重复b和c? – rawr

回答

0

这是你试图完成什么?如果您提供可重复的数据,我可能会提供更多帮助。您将需要安装dplyr。

A <- data.frame(X1 = c(3,5,7), X2 = c(4,7,9), X3 = c(6,7,"NA")) 
B <- data.frame(X1 = c(7,5,7), X2 = c(4,7,9), X3 = c(6,7,9)) 
C <- data.frame(X1 = c(9,5,7), X2 = c(5,7,9), X3 = c(6,7,9)) 

newtable = data.frame(V1 = dplyr::filter(A, X1 >3 & X2 >4)) 
newtable 

    V1.X1 V1.X2 V1.X3 
1  5  7  7 
2  7  9 NA 
+2

你也可以用'subset'做到这一点 –

+0

是的,我没有以正确的方式提出问题。当条件不满足时,我不希望成为NA,当条件不满足时,我实际上得到FALSE,所以我想在该行中的元素已经有NA时输出NA。我编辑了问题以显示输入表。 – user3691288

+0

我试过dplyr :: filter,我得到的错误是:data.frame中的错误(V1 = dplyr :: filter(A,X1> 3&X2>: 参数意味着行数不同:8719,956,59179, – user3691288