如何使用 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`。
我的数据集 (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`。