我有三种具有以下格式的R数据,
数据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
所需的输出应具有ID和变量索引,Angle(来自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 :(得分: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