首页 > 解决方案 > 使用 case_when 替换 r 中的值

问题描述

我正在尝试在 r 中复制一些 Stata 代码。在我的 df 中,有一个变量“时间”和一个“曝光”(均为数字,因此具有 1、2、3 等值)。

这是原始Stata代码的样子:

replace time = (time - 31) if exposure == 0

这就是我尝试过的:

recoded_df <- recoded_df %>% mutate(time = case_when(exposure == 0 ~ (time - 31))

我收到代码中存在“意外符号”的错误。但我不知道我做错了什么。

标签: rdplyrcase-when

解决方案


library(dplyr)

df <- data.frame(
  exposure = c(0, 1),
  time = c(81, 20)
)

df %>%
  mutate(
    time = case_when(exposure == 0 ~ time - 30,
                     TRUE ~ time)
  )

  exposure time
1        0   51
2        1   20

推荐阅读