2016-03-08 38 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