2014-06-17 46 views
0

我有三個R數據以下列格式的條件下,ř子集data.frame與來自其它data.frames

數據1

ID V2 V2.1 V2.2 V2.3 ...V2.101 

0 54 40 50 55  43 
1 20 35 14 40  13 
2 10 33 8 44  8 

. . . . .  . 
. . . . .  . 
99 8 38 10 50  10 

數據2

ID V2 V2.1 V2.2 V2.3 ...V2.101 

0 1.5 1.5 1.4 1.3  1.5 
1 1.3 3  3  1.5  3 
2 1.5 4  4  1.8  5 

.  .  . .  .  . 
.  .  . .  .  . 
99 1.4 12 8 1.9  8 

數據3

ID V2 V2.1 V2.2 V2.3 ...V2.101 

0 1.4 1.3 1.3 1.2  1.2 
1 1.4 3.1 3.2  1.4  4 
2 1.3 4  4.2  1.3  3 

.  .  . .  .  . 
.  .  . .  .  . 
99 1.2 10 7.5 1.6  9 

data1中的V2到V101表示對於data1中的每個ID值以及對於數據2中的每個ID值進行100次相同的觀察(角度),並且將數據2中的V2到V101表示爲類似觀測值的結合。我想從data1中提取ID和變量(角度)值,如果變量(角度)值小於30,則相應的值在data2或data3中小於1.5。基本上我想要角度小於30的提取數據,並且任一鍵都小於1.5。

所需的輸出應該有ID和可變折射率,角度(從DATA1)和Bond(最小鍵從DATA2和DATA3應報告)

ID Variable Angle Bond 

10  V2.5  29  1.5 
40  V2.36 13  1.3 
50  V2.99  8  1.4 
..  ..  ..  1.0 

我與子集命令試過,

my.data<-subset(data1, V2<30) 

但我不知道如何包括所有的V2值(V2 TO V2.101),並且還從data2和data3中添加條件。

+0

你可以發佈一些樣本數據幀的預期輸出嗎? – josliber

+0

您有多個條件需要滿足每行。例如,row1,V2可能會滿足您的條件,但V2.1可能不會。你如何處理這種情況?輸出在這裏很有用。 – asb

+0

請同時使用'dput',以便用戶不必花費很長時間來創建與您的輸入/輸出相匹配的示例。 – JPC

回答

0
library(reshape2) 
library(plyr) 
d1 <- melt(df1, id.var='ID', value.name = "angle") 
d2 <- melt(df2, id.var='ID', value.name = "bond") 
d3 <- melt(df3, id.var='ID', value.name = "bond2") 

dall <- join_all(list(d1,d2,d3), by= c('ID', 'variable')) 
dall2 <- melt(dall, id.var = c('ID', 'variable', 'angle'), value.name = "bond") 
subset(dall2, angle < 30 & bond < 1.5) 

    ID variable angle variable.1 bond 
2 1  V2 20  bond 1.3 
17 1  V2 20  bond2 1.4 
18 2  V2 10  bond2 1.3