ř子集data.frame与来自其它data.frames
问题描述:
我有三个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中添加条件。
答
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
你可以发布一些样本数据帧的预期输出吗? – josliber
您有多个条件需要满足每行。例如,row1,V2可能会满足您的条件,但V2.1可能不会。你如何处理这种情况?输出在这里很有用。 – asb
请同时使用'dput',以便用户不必花费很长时间来创建与您的输入/输出相匹配的示例。 – JPC