2013-08-23 90 views
0

假设我有两个数据帧,DF和DF2,看起来像:除以基于两个数据帧一列中的R

DF

 User Lab Score 
     A  1021 12 
     A  1022 10 
     A  1024 15 
     B  1021 9 
     B  1022 9 
     B  1023 14 
     C  1024 10 

DF2

 Lab Score 
     1021 15 
     1022 10 
     1023 15 
     1024 15 

我想根据实验室将df中的Score列与df2中的Score列分开。因此,我想用一个数据帧,看起来落得像:

 User Lab Score 
     A  1021 0.8 
     A  1022 1.0 
     A  1024 1.0 
     B  1021 0.6 
     B  1022 0.9 
     B  1023 0.93 
     C  1024 0.67 

其中12/15 = 0.8,10/10 = 1.0,15/15 = 1.0,9/15 = 0.6,9/10 = 0.9,14/15 = 0.9333,10/15 = 0.6667

回答

0

只是匹配实验室像这样:

df$Score <- df$Score/df2$Score[ match(df$Lab , df2$Lab) ] 
# User Lab  Score 
#1 A 1021 0.8000000 
#2 A 1022 1.0000000 
#3 A 1024 1.0000000 
#4 B 1021 0.6000000 
#5 B 1022 0.9000000 
#6 B 1023 0.9333333 
#7 C 1024 0.6666667 

match返回第一匹配它的指数是第一个参数,在它的第二个参数。用英语返回df2中的哪一行是每个实验室在df的匹配。

相关问题