根据数据框中的列更新时间序列

Update time series on the basis of columns in data frame

我有一个数据框 df 为

Name    DoApply
T1      No
T2      Yes
T3      No

时间序列对象 z 为

                T1      T2      T3
2013-01-18      20      15      21
2013-01-20      30      18      17
2013-01-21      10      21      24
2013-01-22      15      17      15
2013-01-23      18      16      18

我希望根据是或否进行输出

                T1      T2      T3
2013-01-18      20      0       21
2013-01-20      30      0       17
2013-01-21      10      0       24
2013-01-22      15      0       15
2013-01-23      18      0       18

我正在尝试类似的操作,但做不到

coredata(z)[match something from df] <- 0

你可以试试

z[,df$DoApply[match(colnames(z), df$Name)]=='Yes'] <- 0

或者

 z[,with(df, Name[DoApply=='Yes'])] <- 0