0

我对具有多个参数的 R 应用函数有一个类似但不完全相同的问题

我有一个包含两个变量 RSHIFTSTART 和 RSHIFTEND(以及其他变量)的数据集。这些变量包含时间,例如。23:30:00 或 00:00:00。我想用 NA 替换 RSHIFTSTART 和 RSHIFTEND ,只要两个变量都为零,即。'00:00:00'。

我写了一个我认为可以完成这项工作的函数:

# Change '00:00:00' to NA where both variables are '00:00:00'
zeroTime=function(x,y) {
    if (x=='00:00:00' & y=='00:00:00') {
        replace(x,x=='00:00:00',NA)
        replace(y,x=='00:00:00',NA)
    }
}

我的问题是如何应用这个函数来更新数据集的变量,即。为其提供两个参数。我试过了:

sapply(rosterSample$RSHIFTSTART,rosterSample$RSHIFTEND,zeroTime)

但这种语法不正确。也许我将被限制为每次调用只更改一个变量,即。RSHIFTSTART 或 RSHIFTEND,没关系。

有任何想法吗?谢谢皮特

4

1 回答 1

4

像这样的东西?

rosterSample <- data.frame(RSHIFTSTART=c('00:00:00', '01:00:00', '00:00:00'), RSHIFTEND=c('10:00:00', '00:00:00', '00:00:00'), stringsAsFactors=FALSE)
ind <- with(rosterSample, RSHIFTSTART=='00:00:00' & RSHIFTEND=='00:00:00')
rosterSample$RSHIFTSTART[ind] <- NA
rosterSample$RSHIFTEND[ind] <- NA
于 2013-08-01T11:03:49.293 回答