可以理解的是,可能有更简单的方法可以做到这一点,但我对ifelse((函数的工作原理感兴趣。例如,假设我想创建一个突变数据集,该数据集从原始数据集中的特定变量中删除底部 5% 和前 5% 的值。如何使用 ifelse(( 函数来完成此操作。我有这段不成功的代码。
newdataset <- olddataset %>%
mutate(new_variable = ifelse(old_variable <= 0.05, old_variable >= 0.95, NA, old_variable)
起初对我来说不是那么直观,但你显然可以为 ifelse 中的值参数提供一个向量。(不过,您必须注意测试表达式和值中使用的向量的长度。
首先,模拟一些数据。
data <- data.frame(var = rnorm(20))
然后,找到一组所需的分位数。然后使用ifelse。
q <- quantile(data$var, probs=c(0.05, 0.95))
ifelse(data$var <= q[[1]] | data$var >= q[[2]], NA, data$var)
如果你坚持使用变异,
mutate(data, new_var = ifelse(var <= q[[1]] | var >= q[[2]], NA, var))