0

假设我有两个数据框 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 中的 Score 列除以 df2 中的 Score 列,具体取决于 Lab。因此,我想最终得到一个如下所示的数据框:

        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

4

1 回答 1

1

只需像这样匹配 Labs:

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与每个 Lab in 匹配的行df

于 2013-08-23T15:30:15.763 回答