首页 > 解决方案 > 如何在不更改原始数据集的情况下在 r 中使用多个替换?

问题描述

我有一个数据集,对于其中一个变量,我需要用 NA 替换所有高于 0.99 百分位且低于 0 的值。由于我需要绘制多个变量,我正在尝试创建一个模板,我可以在其中输入我需要绘制的变量,然后在不更改原始数据集的情况下保存它,因为我需要制作不同类型的图表。

我如何嵌套两个替换功能?

na.omit(replace(data$Sodio, which(data$Sodio <0), NA)))

这是我用的第一个,但我还需要替换这个数字上面的数字

quantile(data$Sodio, probs=c(0.99), na.rm=TRUE)

所以我需要类似的东西

na.omit(replace(data$Sodio, which(data$Sodio>quantile(data$Sodio, probs=c(0.99), na.rm=TRUE), NA)))

是否可以只写一个字符串并实现两者?

标签: rreplace

解决方案


您可以将这两个条件与 OR ( |)

new_data <- transform(data, Sodio = replace(Sodio, 
             Sodio > quantile(Sodio, probs=0.99, na.rm=TRUE) | Sodio < 0, NA))

推荐阅读