r:有条件地替换列子集中的值

La *_*ale 4 conditional replace r

我有一个像这样的数据帧:

sport   contract start contract end visits spends purchases
basket   2013-10-01     2014-10-01   12      14      23
basket   2014-02-12     2015-03-03   23      11      7
football 2015-02-12     2016-03-03   23      11      7
basket   2016-07-17     2013-09-09   12       7      13
Run Code Online (Sandbox Code Playgroud)

我想根据变量"sport"和"contract start"有条件地用NAs替换列[4:6].例如:

i1 <- which(df$sport =="basket" & df$contract_start>="2014-01-01")
Run Code Online (Sandbox Code Playgroud)

将索引满足条件的所有行.是否有一段简单的代码可以添加到上面,在给定上述条件的情况下,将用NAs代替df [4:6]?我想最终得到类似的东西:

sport   contract start contract end visits spends purchases
basket   2013-10-01     2014-10-01   12      14      23
basket   2014-02-12     2015-03-03   NA      NA      NA
football 2015-02-12     2016-03-03   23      11      7
basket   2016-07-17     2013-09-09   NA      NA      NA
Run Code Online (Sandbox Code Playgroud)

谢谢!一个.

Psi*_*dom 7

您只需指定要用NA替换的行和列,然后分配NA给它:

df[df$sport =="basket" & df$contract_start>="2014-01-01", 4:6] <- NA

df
#      sport contract_start contract_end visits spends purchases
# 1   basket     2013-10-01   2014-10-01     12     14        23
# 2   basket     2014-02-12   2015-03-03     NA     NA        NA
# 3 football     2015-02-12   2016-03-03     23     11         7
# 4   basket     2016-07-17   2013-09-09     NA     NA        NA
Run Code Online (Sandbox Code Playgroud)