Dears,

I would generate new variables every time that corr_tof* takes the same value as tof. Here below the dataex

Code:
* Example generated by -dataex-. For more info, type help dataex
clear
input float id int year long(type_cert1 cert1 product_cert1) float corr_tof1 long(type_cert2 cert2 product_cert2) float(corr_tof2 tof)
1 2008 6 1 22 8 0 0 0 0 10
1 2009 6 1 22 8 0 0 0 0 10
2 2008 6 1 22 8 0 0 0 0 10
3 2008 6 1 22 8 0 0 0 0 10
4 2008 6 1 22 8 0 0 0 0 10
4 2009 6 1 22 8 0 0 0 0 8
4 2011 6 1 22 8 0 0 0 0 8
4 2012 6 1 22 8 0 0 0 0 8
5 2008 6 1 22 8 0 0 0 0 8
6 2008 6 1 22 8 0 0 0 0 10
7 2008 6 1 22 8 0 0 0 0 10
8 2008 6 1 22 8 0 0 0 0 10
8 2014 6 1 22 8 0 0 0 0 8
9 2014 1 1 64 4 0 0 0 0 14
9 2016 1 1 64 4 0 0 0 0 7
9 2017 1 1 64 4 0 0 0 0 7
9 2018 1 1 64 4 0 0 0 0 14
9 2019 1 1 64 4 0 0 0 0 14
10 2008 6 1 22 8 0 0 0 0 10
11 2008 6 1 22 8 0 0 0 0 10
12 2008 6 1 22 8 0 0 0 0 10
12 2009 1 1 9 10 0 0 0 0 10
12 2010 1 1 9 10 0 0 0 0 8
12 2011 1 1 9 10 0 0 0 0 10
12 2012 1 1 9 10 0 0 0 0 8
12 2014 6 1 22 8 0 0 0 0 8
12 2015 6 1 22 8 0 0 0 0 8
13 2008 6 1 22 8 0 0 0 0 10
13 2009 1 1 9 10 0 0 0 0 10
14 2008 6 1 22 8 0 0 0 0 10
14 2009 6 1 22 8 0 0 0 0 10
14 2011 6 1 22 8 0 0 0 0 8
15 2008 6 1 22 8 0 0 0 0 10
15 2009 6 1 22 8 0 0 0 0 10
16 2018 3 6 64 4 0 0 0 0 8
16 2019 3 6 64 4 0 0 0 0 8
17 2009 6 1 22 8 0 0 0 0 10
17 2011 6 1 22 8 0 0 0 0 8
18 2008 3 6 64 4 0 0 0 0 10
18 2010 3 6 64 4 0 0 0 0 10
18 2011 3 6 64 4 0 0 0 0 8
19 2012 6 1 22 8 0 0 0 0 8
20 2008 6 1 22 8 0 0 0 0 10
21 2008 6 1 22 8 0 0 0 0 10
22 2008 6 1 22 8 0 0 0 0 10
22 2011 6 1 22 8 0 0 0 0 8
23 2008 6 1 22 8 0 0 0 0 10
23 2011 6 1 22 8 0 0 0 0 8
23 2012 6 1 22 8 0 0 0 0 8
23 2014 1 1 9 10 6 1 22 8 10
23 2016 6 1 22 8 0 0 0 0 8
23 2017 6 1 22 8 0 0 0 0 8
24 2008 6 1 22 8 0 0 0 0 10
25 2008 6 1 22 8 0 0 0 0 8
26 2009 1 1 9 10 0 0 0 0 10
26 2010 1 1 9 10 0 0 0 0 8
26 2011 1 1 9 10 0 0 0 0 8
26 2012 1 1 9 10 0 0 0 0 8
26 2013 6 1 22 8 0 0 0 0 8
27 2008 6 1 99 4 3 6 64 4 4
27 2010 3 6 64 4 0 0 0 0 4
27 2011 3 6 64 4 0 0 0 0 4
27 2012 3 6 64 4 0 0 0 0 4
27 2013 3 6 64 4 0 0 0 0 4
27 2014 3 6 64 4 0 0 0 0 4
27 2015 8 3 103 4 3 6 64 4 4
27 2016 3 6 64 4 6 1 103 4 4
27 2017 3 6 64 4 0 0 0 0 4
27 2018 3 6 64 4 0 0 0 0 4
27 2019 3 6 64 4 0 0 0 0 4
28 2008 6 1 99 4 0 0 0 0 7
28 2010 1 1 64 4 0 0 0 0 7
28 2011 6 1 103 4 3 6 64 4 4
28 2012 8 3 99 4 3 6 64 4 4
28 2013 3 6 64 4 1 1 64 4 4
28 2014 1 1 64 4 3 6 64 4 7
28 2016 8 3 103 4 1 1 64 4 7
28 2017 1 1 64 4 3 6 64 4 7
28 2018 3 6 64 4 1 1 64 4 7
28 2019 1 1 64 4 3 6 64 4 7
29 2009 1 1 9 10 0 0 0 0 10
29 2010 3 6 64 4 1 1 9 10 8
29 2011 3 6 64 4 0 0 0 0 8
29 2012 3 6 64 4 0 0 0 0 8
29 2013 1 1 9 10 3 6 64 4 8
29 2014 3 6 64 4 0 0 0 0 8
29 2015 3 6 64 4 0 0 0 0 8
30 2008 6 1 22 8 0 0 0 0 10
31 2008 6 1 22 8 0 0 0 0 10
32 2008 6 1 22 8 0 0 0 0 10
32 2009 1 1 9 10 0 0 0 0 10
33 2009 1 1 9 10 0 0 0 0 10
34 2008 6 1 38 8 0 0 0 0 10
35 2008 6 1 22 8 0 0 0 0 10
35 2010 1 1 9 10 0 0 0 0 8
35 2011 1 1 9 10 0 0 0 0 8
35 2012 1 1 9 10 0 0 0 0 8
36 2009 6 1 22 8 0 0 0 0 10
36 2010 6 1 22 8 0 0 0 0 8
37 2008 6 1 22 8 0 0 0 0 10
end
What I would like to do is

Code:
// Generate a new variable containing the same as the related original variable ONLT IF corr_tof*=tof 

g new_type_cert1=type_cert1 if corr_tof1==tof
g new_cert1=cert1 if corr_tof1==tof
g new_product_cert1=product_cert1 if corr_tof1==tof
Since I have type_cert* cert* product_cert* going up to 20 in my dataset, I would like to understand how to do this in a less tedious and smarter way.

I (naively) tried the following:

Code:
global corr_tof corr_tof1 corr_tof2

foreach X of varlist type_cert1 type_cert2 cert1 cert2 product_cert1 product_cert2 {
g new_`X'=`X' if $corr_tof==tof
}
but, besides not being sure this would produce the output I had in mind, the error message is the following:

invalid 'corr_tof2'
r(198)

Many thanks,

F.