如何使用 R 中的 tidyverse 替换数据框中的某些值?

How to replace certain values in the dataframe using tidyverse in R?

我的数据集 (df) 中有一些值需要替换为正确的值,例如,

Height Disease Weight>90kg
1.58 1 0
1.64 0 1
1.67 1 0
52 0 1
67 0 0

我想将前三个值替换为“158”、“164”和“167”。我想将下一个替换为152和167(开头加1)。

我尝试了以下代码,但它不起作用:

data_clean <- function(df) {
df[height==1.58] <- 158
df}
data_clean(df)

请帮忙!

使用 recode 您可以明确地重新编码值:

df <- mutate(df, height = recode(height, 
                                 1.58 = 158, 
                                 1.64 = 164, 
                                 1.67 = 167, 
                                 52 = 152, 
                                 67 = 167))

但是,这显然是一个手动过程,对于需要重新编码的许多值的情况来说并不理想。

或者,您可以执行以下操作:

df <- mutate(df, height = case_when(
  height < 2.5 ~ height * 100,
  height < 100 ~ height + 100
)

这实际上取决于您的数据构成,但对于给出的示例,它会起作用。请注意您的假设。也可以使用 is.double 和 'is.integer`。