根据R中的两个数据帧划分列

时间:2013-08-23 15:26:30

标签: r dataframe

假设我有两个数据帧df和df2,它们看起来像:

  

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中的得分列除以df2中的得分列,具体取决于实验室。因此,我希望得到一个看起来像这样的数据框:

        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

1 个答案:

答案 0 :(得分: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中每个实验的匹配。