给定
(df <- data.frame(datetime=rep(Sys.time(), 3), origin=c("arabian", "russian", "us")))
# datetime origin
# 1 2016-05-04 11:27:52 arabian
# 2 2016-05-04 11:27:52 russian
# 3 2016-05-04 11:27:52 us
offset <- c("arabian"=3, "russian"=5)
然后
transform(df, datetime=datetime + offset[origin]*60*60)
# datetime origin
# 1 2016-05-04 14:26:12 arabian
# 2 2016-05-04 16:26:12 russian
# 3 <NA> us
或者
transform(df, datetime=datetime + ifelse(origin %in% names(offset), offset[df$origin]*60*60, 0))
# datetime origin
# 1 2016-05-04 14:27:52 arabian
# 2 2016-05-04 16:27:52 russian
# 3 2016-05-04 11:27:52 us